最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

過關(guān)斬將之路-設(shè)計模式

2023-06-08 08:41 作者:IT楓斗者-跳蚤網(wǎng)  | 我要投稿

hello大家,因之前有位學員在面試過程中被問到了“熟悉哪些設(shè)計模式”,她回答的不多,所以今天將跟大家介紹一些設(shè)計模式。

1、什么是單例模式?

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

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

可能這會需要你手寫一個單例模式,這就得自己去學了,因為單例模式有很多種寫法,懶漢模式,餓漢模式,雙重檢查模式等。懶漢模式就是用的時候再去創(chuàng)建對象,餓漢模式就是提前就已經(jīng)加載好的靜態(tài)static對象,雙重檢查模式就是兩次檢查避免多線程造成創(chuàng)建了多個對象。

單例模式有很多種的寫法,我總結(jié)一下:

  • 餓漢式單例模式的寫法:線程安全

  • 懶漢式單例模式的寫法:非線程安全

  • 雙檢鎖單例模式的寫法:線程安全

2、什么是代理模式

代理模式是給某一個對象提供一個代理,并由代理對象控制對原對象的引用。

優(yōu)點

  • 代理模式能夠協(xié)調(diào)調(diào)用者和被調(diào)用者,在一定程度上降低了系統(tǒng)的耦合度;

  • 可以靈活地隱藏被代理對象的部分功能和服務(wù),也增加額外的功能和服務(wù)。

缺點

  • 由于使用了代理模式,因此程序的性能沒有直接調(diào)用性能高;

  • 使用代理模式提高了代碼的復(fù)雜度。


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

簡單工廠模式又叫靜態(tài)工廠方法模式,就是建立一個工廠類,對實現(xiàn)了同一接口的一些類進行實例的創(chuàng)建。

優(yōu)點:

  • 工廠類含有必要的判斷邏輯,可以決定在什么時候創(chuàng)建哪一個產(chǎn)品類的實例,客戶端可以免除直接創(chuàng)建產(chǎn)品對象的責任,而僅僅“消費”產(chǎn)品;簡單工廠模式通過這種做法實現(xiàn)了對責任的分割,它提供了專門的工廠類用于創(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)的維護。

4、什么是抽象工廠模式?

抽象工廠模式是在簡單工廠的基礎(chǔ)上將未來可能需要修改的代碼抽象出來,通過繼承的方式讓子類去做決定。


5、什么是裝飾器模式?

裝飾器模式是指動態(tài)地給一個對象增加一些額外的功能,同時又不改變其結(jié)構(gòu)。

優(yōu)點:裝飾類和被裝飾類可以獨立發(fā)展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態(tài)擴展一個實現(xiàn)類的功能。

裝飾器模式的關(guān)鍵:裝飾器中使用了被裝飾的對象

比如,創(chuàng)建一個對象“gebilaowang”,給對象添加不同的裝飾,穿上夾克、戴上帽子......,這個執(zhí)行過程就是裝飾者模式。

一句名言:人靠衣裳馬靠鞍。都是裝飾器模式的生活案列

6、代理模式和裝飾器模式有何不同?

它們都是結(jié)構(gòu)型模式,但側(cè)重點不同:代理模式重在訪問權(quán)限的控制,而裝飾器模式重在功能的加強。

7、知道模板方法模式嘛?

模板方法模式是指定義一個算法骨架,將具體內(nèi)容延遲到子類去實現(xiàn)。

優(yōu)點:

  • 提高代碼復(fù)用性:將相同部分的代碼放在抽象的父類中,而將不同的代碼放入不同的子類中;

  • 實現(xiàn)了反向控制:通過一個父類調(diào)用其子類的操作,通過對子類的具體實現(xiàn)擴展不同的行為,實現(xiàn)了反向控制并且符合開閉原則。

    打個比方:喝茶:燒水----放入茶葉---喝茶。放入的茶葉每個人自己的喜好不一樣,有的是普洱、有的是鐵觀音等。

8、知道享元模式嗎?

顧名思義就是被共享的單元。享元模式的意圖是復(fù)用對象,節(jié)省內(nèi)存,前提是享元對象是不可變對象。

具體來講,當一個系統(tǒng)中存在大量重復(fù)對象的時候,如果這些重復(fù)的對象是不可變對象,我們就可以利用享元模式將對象設(shè)計成享元,在內(nèi)存中只保留一份實例,供多處代碼引用。這樣可以減少內(nèi)存中對象的數(shù)量,起到節(jié)省內(nèi)存的目的。

9、享元模式和單列模式的區(qū)別在哪?

單例模式是創(chuàng)建型模式,重在只能有一個對象。而享元模式是結(jié)構(gòu)型模式,重在節(jié)約內(nèi)存使用,提升程序性能。

享元模式:把一個或者多個對象存起來,用的時候,直接從緩存里獲取。也就是說享元模式不一定只有一個對象。

10、什么是策略模式?

策略模式是指定義一系列算法,將每個算法都封裝起來,并且使他們之間可以相互替換。

優(yōu)點:遵循了開閉原則,擴展性良好。

缺點:隨著策略的增加,對外暴露越來越多。

我們?nèi)ダ_的交通方式(策略)很多,比如說坐飛機、坐高鐵、自己開車等方式。每一種方式就可以理解為每一種策略。

這就是生活中的策略模式。

11、了解適配器模式嘛?

適配器模式是將一個類的接口變成客戶端所期望的另一種接口,從而使原本因接口不匹配而無法一起工作的兩個類能夠在一起工作。

優(yōu)點:

  • 可以讓兩個沒有關(guān)聯(lián)的類一起運行,起著中間轉(zhuǎn)換的作用;

  • 靈活性好,不會破壞原有的系統(tǒng)。

缺點:過多地使用適配器,容易使代碼結(jié)構(gòu)混亂,如明明看到調(diào)用的是 A 接口,內(nèi)部調(diào)用的卻是 B接口的實現(xiàn)。

生活中的插座,為了適應(yīng)各種插頭,然后上面有兩個孔的,三個空的,基本都能適應(yīng)。還有萬能充電器、USB接口等。這些都是生活中的適配器模式

12、了解觀察者模式嘛?

觀察者模式是定義對象間的一種一對多依賴關(guān)系,使得每當一個對象狀態(tài)發(fā)生改變時,其相關(guān)依賴對象皆得到通知并被自動更新。觀察者模式又叫做發(fā)布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、源-監(jiān)聽器(Source/Listener)模式或從屬者(Dependents)模式。

優(yōu)點:

  • 觀察者模式可以實現(xiàn)表示層和數(shù)據(jù)邏輯層的分離,并定義了穩(wěn)定的消息更新傳遞機制,抽象了

  • 更新接口,使得可以有各種各樣不同的表示層作為具體觀察者角色;

  • 觀察者模式在觀察目標和觀察者之間建立一個抽象的耦合;

  • 觀察者模式支持廣播通信;

  • 觀察者模式符合開閉原則(對拓展開放,對修改關(guān)閉)的要求。

缺點:

  • 如果一個觀察目標對象有很多直接和間接的觀察者的話,將所有的觀察者都通知到會花費很多時間;

  • 如果在觀察者和觀察目標之間有循環(huán)依賴的話,觀察目標會觸發(fā)它們之間進行循環(huán)調(diào)用,可能導(dǎo)致系統(tǒng)崩潰;

  • 觀察者模式?jīng)]有相應(yīng)的機制讓觀察者知道所觀察的目標對象是怎么發(fā)生變化的,而僅僅只是知道觀察目標發(fā)生了變化。

以上這些設(shè)計模式能應(yīng)對絕大多數(shù)人和面試場景。建議私下自己用代碼實現(xiàn)一番,便于更好地理解。

過關(guān)斬將之路-設(shè)計模式的評論 (共 條)

分享到微博請遵守國家法律
江安县| 聂拉木县| 鄂伦春自治旗| 达拉特旗| 娄底市| 金乡县| 德格县| 敦化市| 昭通市| 通州市| 阳曲县| 信丰县| 北宁市| 虎林市| 福鼎市| 武清区| 霸州市| 左云县| 正蓝旗| 新河县| 怀仁县| 宁晋县| 新竹县| 介休市| 改则县| 威信县| 石河子市| 吉首市| 建水县| 凤冈县| 荔浦县| 上栗县| 隆子县| 宁乡县| 贺兰县| 彭泽县| 贵定县| 平原县| 惠东县| 长治县| 丹棱县|