黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

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

更新時間:2022-12-30 11:11:51 來源:動力節點 瀏覽1436次

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

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

分類

包含

關注點

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

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

2.什么是單例模式?

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

優點:不會頻繁地創建和銷毀對象,浪費系統資源。

使用場景:IO 、數據庫連接、Redis 連接等。

單例模式代碼實現:

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

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

單例延遲加載代碼:

// 單例模式-延遲加載版
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.什么是簡單工廠模式?

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

優點:

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

缺點:

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

簡單工廠示意圖如下:

java設計模式面試題

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 成人黄色毛片 | 日韩一区二区在线观看 | 亚洲国产成人精品91久久久 | 91久久精一区二区三区大全 | 夜天干天干啦天干天天爽 | 色操在线| 91成人免费观看 | 婷婷六月丁香色婷婷网 | 午夜在线视频观看版 | 亚洲高清在线视频 | 五月激情婷婷网 | 人人干人人干人人干 | 五月综合色 | 69国产成人精品视频软件 | 一个人看的免费高清视频www | 日韩性大片免费 | 久草最新 | 欧美一区二区三区男人的天堂 | 成人高清在线观看播放 | 久久久久综合一本久道 | 天天干天天拍天天射天天添天天爱 | 九九99re在线视频精品免费 | 天天综合网天天综合色 | 最近的2019中文字幕免费一页 | 97色伦图片在线观看 | 国产亚洲欧美另类一区二区三区 | 波多野结衣免费线在线 | 亚洲国产成人精品激情 | 欧美黑人性猛交╳xx╳动态图 | 九九性视频 | 看全色黄大色黄女片做 | 久久五月激情婷婷日韩 | 日本午夜影院 | 91精品视频免费在线观看 | 日韩精品在线免费观看 | 国产成人污污网站在线观看 | 国产精品视频第一页 | 人人爱人人射 | 91亚洲国产在人线播放午夜 | 日韩成人一级 | 黄色影院免费观看 |