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

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

面試官高頻問到的問題:Java設(shè)計模式面試題

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

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

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

分類

包含

關(guān)注點

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

下面會對常用的設(shè)計模式分別做詳細(xì)的說明。

2.什么是單例模式?

答:單例模式是一種常用的軟件設(shè)計模式,在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在,整個系統(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;
    }
}

單例模式調(diào)用代碼:

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

程序的輸出結(jié)果: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)了同一接口的一些類進(jìn)行實例的創(chuàng)建。比如,一臺咖啡機(jī)就可以理解為一個工廠模式,你只需要按下想喝的咖啡品類的按鈕(摩卡或拿鐵),它就會給你生產(chǎn)一杯相應(yīng)的咖啡,你不需要管它內(nèi)部的具體實現(xiàn),只要告訴它你的需求即可。

優(yōu)點:

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

缺點:

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

簡單工廠示意圖如下:

java設(shè)計模式面試題

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

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 一区二区精品视频 | 99精品视频看国产啪视频 | 成人福利视频网址 | 天堂va欧美va亚洲va国产 | 国产成人在线视频播放 | 国产日韩一区二区三区在线播放 | 55夜色66夜色欧洲精品 | 日韩在线视频免费看 | 一本大道香焦在线视频 | 欧美a在线看 | 午夜影院在线观看免费 | 麻豆果冻传媒新剧国产短视频 | 男女一起www免费高清视频 | 老头边吃奶边做边爱 | 精品福利在线观看 | 亚洲国产一区在线观看 | 亚洲成a人片77777在线播放 | 天天操精品| 午夜极品 | 欧美激情在线播放一区二区三区 | 亚洲精品一二三区 | 手机在线成人精品视频网 | 曰批全过程免费视频观看软件 | freexxx日本| 免费性网站 | 国产一区三区二区中文在线 | 狠狠色狠狠色综合网 | 国产女同志videos | 国产一区二区在线视频观看 | 国产午夜精品福利 | 国产精品人伦久久 | 欧美一级网站 | 波多野结衣在线视频免费观看 | 免费亚洲成人 | 久久亚洲人成国产精品 | 性夜黄a爽爽免费视频国产 性夜黄 a 爽免费看 | 狠狠干五月 | 在线h片| 国内精品在线播放 | 最新欧美精品一区二区三区不卡 | 一二三区乱码一区二区三区码 |