开发中最常使用到那些设计模式?
- 工廠設(shè)計(jì)模式和單例模式就不多說(shuō)了,比較常見。
- 裝飾者模式,用以增強(qiáng)類中的某個(gè)方法,比如io流里的BufferedInputStream內(nèi)置緩沖區(qū)來(lái)提高拷貝的效率
- 觀察者模式用來(lái)代碼的解耦,這個(gè)開發(fā)用的還是挺多的,我很喜歡用spring提供的event事件發(fā)布模型,就是用@EventListener來(lái)監(jiān)聽事件的發(fā)布,實(shí)現(xiàn)代碼的解耦,非常好用
- 適配器模式adapter,有類的適配和對(duì)象的適配。開發(fā)中比如io流里的InputStreamReader(InputStream),可以把字節(jié)流轉(zhuǎn)為字符流
還有接口的適配,比如一個(gè)接口定義了很多方法,現(xiàn)在只要實(shí)現(xiàn)其中一個(gè)方法,就可以定義一個(gè)adapter實(shí)現(xiàn)這個(gè)接口,方法一般空實(shí)現(xiàn)即可,然后繼承這個(gè)adapter類只實(shí)現(xiàn)你關(guān)注的那個(gè)方法。spring框架源碼中有很多adapter類 - 模板設(shè)計(jì)模式,這個(gè)開發(fā)中用的也很常見,封裝不變的部分,擴(kuò)展可變的部分。
比如父類抽象類中定義事件處理總體流程,其中中間的關(guān)鍵步驟讓子類根據(jù)比如上報(bào)事件類型的不同去重寫,比如aqs框架就用到了模板設(shè)計(jì)模式(acquire/release,子類需要實(shí)現(xiàn)tryAcquire/tryRelease方法。 - 代理模式,spring的基于JDK接口和cglib的動(dòng)態(tài)代理
- 策略模式:定義多個(gè)算法,這些算法實(shí)現(xiàn)同一個(gè)功能接口,并且可相互替換。如線程池里的四種拒絕策略。具體查看深入理解策略模式
如果你仔細(xì)思考策略模式的結(jié)構(gòu)和功能的話,就會(huì)發(fā)現(xiàn):如果沒有上下文,策略模式就回到了最基本的接口和實(shí)現(xiàn)了
設(shè)計(jì)模式的類型
總共有 23 種設(shè)計(jì)模式。這些模式可以分為三大類:創(chuàng)建型模式(Creational Patterns)、結(jié)構(gòu)型模式(Structural Patterns)、行為型模式(Behavioral Patterns)。當(dāng)然,我們還會(huì)討論另一類設(shè)計(jì)模式:J2EE 設(shè)計(jì)模式。
1. 創(chuàng)建型模式
這些設(shè)計(jì)模式提供了一種在創(chuàng)建對(duì)象的同時(shí)隱藏創(chuàng)建邏輯的方式,而不是使用 new 運(yùn)算符直接實(shí)例化對(duì)象。這使得程序在判斷針對(duì)某個(gè)給定實(shí)例需要?jiǎng)?chuàng)建哪些對(duì)象時(shí)更加靈活。
工廠模式(Factory Pattern)
抽象工廠模式(Abstract Factory Pattern)
單例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
2. 結(jié)構(gòu)型模式
這些設(shè)計(jì)模式關(guān)注類和對(duì)象的組合。繼承的概念被用來(lái)組合接口和定義組合對(duì)象獲得新功能的方式。
適配器模式(Adapter Pattern)
橋接模式(Bridge Pattern)
過(guò)濾器模式(Filter、Criteria Pattern)
組合模式(Composite Pattern)
裝飾器模式(Decorator Pattern)
外觀模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
3. 行為型模式
這些設(shè)計(jì)模式特別關(guān)注對(duì)象之間的通信。
責(zé)任鏈模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解釋器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
備忘錄模式(Memento Pattern)
觀察者模式(Observer Pattern)
狀態(tài)模式(State Pattern)
空對(duì)象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
訪問者模式(Visitor Pattern)
4. J2EE 模式
這些設(shè)計(jì)模式特別關(guān)注表示層。這些模式是由 Sun Java Center 鑒定的。
MVC 模式(MVC Pattern)
業(yè)務(wù)代表模式(Business Delegate Pattern)
組合實(shí)體模式(Composite Entity Pattern)
數(shù)據(jù)訪問對(duì)象模式(Data Access Object Pattern)
前端控制器模式(Front Controller Pattern)
攔截過(guò)濾器模式(Intercepting Filter Pattern)
服務(wù)定位器模式(Service Locator Pattern)
傳輸對(duì)象模式(Transfer Object Pattern)
普通的:設(shè)計(jì)模式有哪些,代碼怎么實(shí)現(xiàn)?
有水平的:不僅會(huì)寫出代碼和關(guān)鍵點(diǎn),說(shuō)出作用,還能說(shuō)出他的應(yīng)用地方
讓你創(chuàng)造個(gè)設(shè)計(jì)模式,你要考慮哪些?
開閉原則、單一職責(zé)原則、里式替換原則(里氏替換原則中說(shuō),任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn))
迪米特原則(迪米特法則不希望類之間建立直接的聯(lián)系。設(shè)計(jì)模式的門面模式(Facade)和中介模式(Mediator),都是迪米特法則應(yīng)用的例子。
優(yōu)先考慮將一個(gè)類設(shè)置成不變類。
盡量降低一個(gè)類的訪問權(quán)限。
謹(jǐn)慎使用Serializable。
盡量降低成員的訪問權(quán)限)
總結(jié)
以上是生活随笔為你收集整理的开发中最常使用到那些设计模式?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装饰者设计模式
- 下一篇: java中引导页面的,设计模式之模板模式