設(shè)計(jì)模式

1、設(shè)計(jì)模式分類:

  • 創(chuàng)建型模式,共五種:
    工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
  • 結(jié)構(gòu)型模式,共七種:
    適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
  • 行為型模式,共十一種:
    策略模式、模板方法模式、觀察者模式、迭代子模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問者模式、中介者模式、解釋器模式。

2、適配器模式:

優(yōu)點(diǎn)和應(yīng)用場景:

復(fù)用性:系統(tǒng)需要使用現(xiàn)有的類,而此類的接口不符合系統(tǒng)需要。那么可以通過適配器模式將這些功能更好的復(fù)用。
擴(kuò)展性:在實(shí)現(xiàn)適配器功能的時(shí)候,可以自己定義想要的方法而不改變?cè)瓉淼念?,從而自然的擴(kuò)展系統(tǒng)的功能。

類適配器和對(duì)象適配器區(qū)別

類適配器,由于是繼承,所以無法和源類的子類一起工作,而對(duì)象適配器可以把源類和它的子類都適配到目標(biāo)接口。
類適配器可以重新定義父類的部分方法,而對(duì)象適配器就比較困難。
盡量使用對(duì)象適配器,多用 合成/聚合,少用繼承。

3、代理模式:

定義及應(yīng)用場景:

為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問,替原對(duì)象進(jìn)行一些操作,比如中介;如果已有的方法在使用時(shí)需要對(duì)原方法進(jìn)行改進(jìn),比如前置檢測(cè),后置記錄日志,這個(gè)時(shí)候使用代理類。

java動(dòng)態(tài)代理

如果代理類程序運(yùn)行前并不存在,需要在程序運(yùn)行時(shí)動(dòng)態(tài)生成(無需收工編寫代理類源碼),這時(shí)候就用動(dòng)態(tài)代理
如何生成:根據(jù)java的反射機(jī)制動(dòng)態(tài)生成的。
Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler handler);
Spring的AOP就是典型的動(dòng)態(tài)代理應(yīng)用。

4、觀察者模式:

解決的問題和應(yīng)用場景

定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),所依賴它的對(duì)象得到通知并被自動(dòng)更新。此模式通常用來處理事件處理系統(tǒng)。
通知代替輪詢。解耦觀察者和被觀察者,避免直接調(diào)用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容