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