軟件設(shè)計(jì)模式
? ? ? ? 設(shè)計(jì)模式(Design pattern)是一種被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。它代表了解決軟件開發(fā)過程中一般問題的最佳解決方案,這些解決方案是眾多軟件開發(fā)人員經(jīng)過相當(dāng)長的一段時(shí)間的試驗(yàn)和錯(cuò)誤總結(jié)出來的。
? ? ? ??設(shè)計(jì)模式使代碼編制真正工程化,是軟件工程的基石。項(xiàng)目中合理地運(yùn)用設(shè)計(jì)模式可以完美地解決很多問題,每種模式在現(xiàn)實(shí)中都有相應(yīng)的原理來與之對應(yīng),每種模式都描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問題,以及該問題的核心解決方案,這也是設(shè)計(jì)模式能被廣泛應(yīng)用的原因。
? ? ? ??一種設(shè)計(jì)模式可用模式名稱、問題、目的、解決方案、效果、實(shí)例代碼等來描述。常見的設(shè)計(jì)模式有23種。
? ? ? ??(1)根據(jù)處理范圍不同分:類模塊和對象模式;
? ? ? ??(2)根據(jù)目的和用途不同分:創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式。
? ? ? ??① 創(chuàng)建型模式(Creational):這些設(shè)計(jì)模式提供了一種在創(chuàng)建對象的同時(shí)隱藏創(chuàng)建邏輯的方式,而不是使用 new 運(yùn)算符直接實(shí)例化對象。這使得程序在判斷針對某個(gè)給定實(shí)例需要?jiǎng)?chuàng)建哪些對象時(shí)更加靈活。
? ? ? ??包括:工廠模式(Factory)、抽象工廠模式(Abstract Factory)、單例模式(Singleton)、建造者模式(Builder)、原型模式(Prototype)
? ? ? ??② 結(jié)構(gòu)型模式(Structural):這些設(shè)計(jì)模式關(guān)注類和對象的組合。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。
? ? ? ??包括:適配器模式(Adapter)、橋接模式(Bridge)、過濾器模式(Filter、Criteria)、組合模式(Composite)、裝飾器模式(Decorator)、外觀模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)
? ? ? ??③ 行為型模式(Behavioral):這些設(shè)計(jì)模式特別關(guān)注對象之間的通信。
? ? ? ??包括:責(zé)任鏈模式(Chain of Responsibility)、命令模式(Command)、解釋器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、備忘錄模式(Memento)、觀察者模式(Observer)、狀態(tài)模式(State)、空對象模式(Null Object)、策略模式(Strategy)、模板模式(Template)、訪問者模式(Visitor)
? ? ? ??(3)J2EE 模式:這些設(shè)計(jì)模式特別關(guān)注表示層,是由 Sun Java Center 鑒定的。
? ? ? ??包括:MVC 模式(MVC)、業(yè)務(wù)代表模式(Business Delegate)、組合實(shí)體模式(Composite Entity)、數(shù)據(jù)訪問對象模式(Data Access Object)、前端控制器模式(Front Controller)、攔截過濾器模式(Intercepting Filter)、服務(wù)定位器模式(Service Locator)、傳輸對象模式(Transfer Object)。