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

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

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

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

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官網。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 免费日韩网站 | 国产精品人人爽人人做 | 4k岛国精品午夜高清在线观看 | 日韩中文字幕视频在线 | 欧美午夜一区二区福利视频 | 久爱免费观看在线精品 | 亚洲欧美成人综合久久久 | 色在线免费观看 | 60岁欧美乱子伦xxxx | 亚洲一区二区在线成人 | 日韩视频精品在线 | 国产精品98视频全部国产 | 成人午夜看片在线观看 | 国产精品麻豆一区二区 | 成人无遮挡免费网站视频在线观看 | 香蕉吧 | 激情网站网址 | 可以免费观看的一级毛片 | 欧美在线a级高清 | 免费大黄网站 | 国产精品一区二区三区久久 | 久久精品网站免费观看 | 欧美人一级淫片a免费播放 欧美人妖猛交 | 福利片 在线 | 高清免费a级在线观看国产 高清潢色大片 | 国产日韩欧美在线一二三四 | 蝴蝶色综合综合成人网 | 国产69精品久久久久777 | 狠狠做五月深爱婷婷天天综合 | 小娜的荡高h放荡日记 | 一本大道香焦在线视频 | 丁香综合五月 | 精品日韩欧美一区二区三区 | free性中国 | 生活片一级性 | 久久精品国产亚洲网站 | 成年人网站免费 | 国产 字幕 制服 中文 在线 | 国产日产欧产美一二三区 | 日本动态120秒免费 日本二区视频 | 久久亚洲精品永久网站 |