大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業(yè)指南 面試官高頻問到的問題:Java設計模式面試題

面試官高頻問到的問題:Java設計模式面試題

更新時間:2022-12-30 11:11:51 來源:動力節(jié)點 瀏覽1301次

1.說一下設計模式?你都知道哪些?

答:設計模式總共有 23 種,總體來說可以分為三大類:創(chuàng)建型模式( Creational Patterns )、結構型模式( Structural Patterns )和行為型模式( Behavioral Patterns )。

分類

包含

關注點

創(chuàng)建型模式 工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式 關注于對象的創(chuàng)建,同時隱藏創(chuàng)建邏輯
結構型模式 適配器模式、過濾器模式、裝飾模式、享元模式、代理模式、外觀模式、組合模式、橋接模式 關注類和對象之間的組合
行為型模式 責任鏈模式、命令模式、中介者模式、觀察者模式、狀態(tài)模式、策略模式、模板模式、空對象模式、備忘錄模式、迭代器模式、解釋器模式、訪問者模式 關注對象之間的通信

下面會對常用的設計模式分別做詳細的說明。

2.什么是單例模式?

答:單例模式是一種常用的軟件設計模式,在應用這個模式時,單例對象的類必須保證只有一個實例存在,整個系統(tǒng)只能使用一個對象實例。

優(yōu)點:不會頻繁地創(chuàng)建和銷毀對象,浪費系統(tǒng)資源。

使用場景:IO 、數(shù)據(jù)庫連接、Redis 連接等。

單例模式代碼實現(xiàn):

class Singleton {
    private static Singleton instance = new Singleton();
    public static Singleton getInstance() {
        return instance;
    }
}

單例模式調用代碼:

public class Lesson7_3 {
    public static void main(String[] args) {
        Singleton singleton1 = Singleton.getInstance();
        Singleton singleton2 = Singleton.getInstance();
        System.out.println(singleton1 == singleton2); 
    }
}

程序的輸出結果:true

可以看出以上單例模式是在類加載的時候就創(chuàng)建了,這樣會影響程序的啟動速度,那如何實現(xiàn)單例模式的延遲加載?在使用時再創(chuàng)建?

單例延遲加載代碼:

// 單例模式-延遲加載版
class SingletonLazy {
    private static SingletonLazy instance;
    public static SingletonLazy getInstance() {
        if (instance == null) {
            instance = new SingletonLazy();
        }
        return instance;
    }
}

以上為非線程安全的,單例模式如何支持多線程?

使用 synchronized 來保證,單例模式的線程安全代碼:

class SingletonLazy {
    private static SingletonLazy instance;
    public static synchronized SingletonLazy getInstance() {
        if (instance == null) {
            instance = new SingletonLazy();
        }
        return instance;
    }
}

3.什么是簡單工廠模式?

答:簡單工廠模式又叫靜態(tài)工廠方法模式,就是建立一個工廠類,對實現(xiàn)了同一接口的一些類進行實例的創(chuàng)建。比如,一臺咖啡機就可以理解為一個工廠模式,你只需要按下想喝的咖啡品類的按鈕(摩卡或拿鐵),它就會給你生產一杯相應的咖啡,你不需要管它內部的具體實現(xiàn),只要告訴它你的需求即可。

優(yōu)點:

  • 工廠類含有必要的判斷邏輯,可以決定在什么時候創(chuàng)建哪一個產品類的實例,客戶端可以免除直接創(chuàng)建產品對象的責任,而僅僅“消費”產品;簡單工廠模式通過這種做法實現(xiàn)了對責任的分割,它提供了專門的工廠類用于創(chuàng)建對象;
  • 客戶端無須知道所創(chuàng)建的具體產品類的類名,只需要知道具體產品類所對應的參數(shù)即可,對于一些復雜的類名,通過簡單工廠模式可以減少使用者的記憶量;
  • 通過引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產品類,在一定程度上提高了系統(tǒng)的靈活性。

缺點:

  • 不易拓展,一旦添加新的產品類型,就不得不修改工廠的創(chuàng)建邏輯;
  • 產品類型較多時,工廠的創(chuàng)建邏輯可能過于復雜,一旦出錯可能造成所有產品的創(chuàng)建失敗,不利于系統(tǒng)的維護。

簡單工廠示意圖如下:

java設計模式面試題

以上就是“面試官高頻問到的問題:Java設計模式面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節(jié)點Java官網。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久热精品视频 | 国产三级做爰高清视频a | 五月婷婷视频 | 日韩v在线 | 亚洲成人黄色在线 | 欧美一级亚洲一级 | 欧美人与性动交α欧美精品图片 | 久草视频在线免费播放 | 国产精品亚洲综合色拍 | 夜色私人影院永久地址入口 | 亚洲美女视频在线观看 | 欧美激情视频二区三区 | 天天操天天操天天射 | 欧美在线视频免费看 | 久久精品视频亚洲 | 国产福利在线看 | 国产福利在线观看永久免费 | 天天综合天天做天天综合 | 国产一二三区在线观看 | 国产亚洲欧美在线视频 | 四虎国产精品免费久久久 | 国产成人小视频在线观看 | 91在线看片 | 欧美性色福利视频在线观看 | 久久青草免费免费91线频观看 | 91最新国产 | 91久久精品一区二区三区 | 久久精品国产福利 | 性猛交╳xxx乱大交 性猛交毛片 | 亚洲国产成人精品区 | 中国国产aa一级毛片 | 欧美在线观看视频 | 最新中文字幕一区二区乱码 | 国产小视频在线观看免费 | 中文字幕不卡一区2021 | 天天干天天操天天摸 | 国产日韩一区二区三区在线观看 | 亚洲精品久久精品h成人 | 国产精品日本一区二区在线播放 | 天天干夜夜 | 四虎影片 |