設計模式自用查閱源碼(Java版本)
代碼
GOF23
說明:將源碼Fork到自己的gitee中,使用Web IDE查看會極度舒適!
介紹
設計模式
《Design Patterns: Elements of Reusable Object-Oriented Software》(即後述《設計模式》一書),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。這幾位作者常被稱爲"四人組(Gang of Four)"。
設計模式共有三大類:
創建型模式:關注對象的創建過程。共5種。
結構型模式:關注對象和類的組織。共7種。
行爲型模式:關注系統中對象之間的相互交互,研究系統在運行時對象之間的相互通信與協作,進一步明確對象的職責。共11種。
軟件架構
-
CreationPattern:創造型模式
- Singleton:單例模式(1)
- Singleton01:餓漢式
- Singleton02:懶漢式
- Singleton03:雙重檢查鎖
- Singleton04:內部靜態類
- Singleton05:枚舉式
- Singleton06:以懶漢式爲例,解決反射和反序列化破解單例模式漏洞
- SingletonApp01:客戶端,測試單例性
- SingletonApp02:以懶漢式爲例,測試反射和反序列化破解單例模式
- SingletonApp03:測試併發效率
- Factory:工廠模式
- SimpleFactory:簡單工廠模式(2)
- FactoryMethod:工廠方法模式
- AbstractFactory:抽象工廠模式(3)
- CreateObjectApp:測試一般方法創建對象
- SimpleFactoryApp:客戶端,測試簡單工廠模式(生產不同品牌手機案例)
- FactoryMethodApp:客戶端,測試工廠方法模式(生產不同品牌手機案例)
- AbstractFactoryApp:客戶端,測試抽象工廠模式(生產高低端手機零部件案例)
- Builder:構造者模式(4)
- MobilePhoneBuilder:構造器
- MobilePhoneDirector:裝配器
- BuilderApp:客戶端,測試構造者模式(手機零部件製造和裝配案例)
- Prototype:原型模式(5)
- Sheep:淺克隆的原型模式
- Sheep:深克隆的原型模式
- PrototypeApp:客戶端,測試淺克隆的原型模式(克隆羊案例)
- PrototypeApp02:客戶端,測試深克隆的原型模式(克隆羊案例)
- PrototypeApp03:客戶端,測試反序列化實現深克隆(克隆羊案例)
- PrototypeApp04:測試使用原型模式創建對象的效率
- Singleton:單例模式(1)
-
StructuralPattern:結構型模式
- Adapter:適配器模式(6)
- Adaptee:被適配類
- Target:目標接口
- Adapter01:類適配器
- AdapterApp01:客戶端,測試類適配器(電腦接口轉接適配器案例)
- Adapter02:對象適配器
- AdapterApp02:客戶端,測試對象適配器(電腦接口轉接適配器案例)
- Proxy:代理模式(7)
- StaticProxy:靜態代理
- Singer:抽象角色
- RealSinger:真實角色
- SingerProxy:代理角色
- StaticProxyApp:客戶端,測試靜態代理(歌手演出案例)
- DynamicProxy:動態代理(JDK自帶)
- Singer:抽象角色
- RealSinger:真實角色
- SingerHandler:處理器
- DynamicProxyApp:客戶端,測試動態代理(歌手演出案例)
- StaticProxy:靜態代理
- Bridge:橋接模式(8)
- Terminal:終端設備類型繼承結構
- Brand:終端設備品牌繼承結構
- BridgeApp:客戶端,測試橋接模式(終端設備類型和品牌案例)
- Terminal02:多重繼承結構(與橋接模式對比)
- Composite:組合模式(9)
- Component:抽象組件、抽象葉子組件和抽象容器組件
- Anti_Virus:具體葉子組件和具體容器組件
- CompositeApp:客戶端,測試組合模式(殺毒軟件案例)
- Decorator:裝飾器模式(10)
- AbstractCar:抽象角色
- Car:具體角色
- DecoratorCar:裝飾角色
- FlyCar、SwimCar:具體裝飾角色
- DecoratorApp:客戶端,測試裝飾器模式(超級汽車案例)
- Facade:外觀模式(11)
- RegisterFacade:門面對象
- FacadeApp:客戶端,測試外觀模式(公司註冊案例)
- FlyWeight:享元模式(12)
- FlyWeight:抽象享元類
- ConcreteFlyWeight:具體享元類
- UnsharedConcreteFlyWeight:非共享享元類
- FlyWeightFactory:享元工廠
- FlyWeightApp:客戶端,測試享元模式(圍棋棋子移動案例)
- Adapter:適配器模式(6)
-
BehavioralPattern:行爲型模式
- ChainOfResp:責任鏈模式(13)
- LeaveRequest:請求對象
- Leader:抽象處理對象
- ConcreteLeader:具體處理對象(多個)
- ChainOfRespApp:客戶端,測試責任鏈模式(請假審批案例)
- Iterator:迭代器模式(14)
- AbstractIterator:抽象迭代器
- Container:聚合對象和內部迭代器
- IteratorApp:客戶端,測試迭代器模式(正向遍歷迭代器案例)
- Mediator:中介者模式(15)
- GeneralManager:中介者
- Department:同事(抽象同事和具體同事)
- MediatorApp:客戶端,測試中介者模式(總經理協調各部門案例)
- Command:命令模式(16)
- Receiver:接收者
- Command:命令類(抽象命令和具體命令)
- Invoker:調用者
- CommandApp:客戶端,測試命令模式(單條命令執行案例)
- Interpreter:解釋器模式(17)
- no code
- Visiter:訪問者模式(18)
- no code
- Strategy:策略模式(19)
- Strategy:策略(抽象策略和具體策略)
- Context:上下文
- NonStrategy:不使用策略模式實現相同功能
- StrategyAPP:客戶端,測試策略模式(客戶報價案例)
- TemplateMethod:模板方法模式(20)
- BankTemplateMethod:模板方法類
- TemplateMethodApp:客戶端,測試模板方法模式(銀行辦理業務案例)
- State:狀態模式(21)
- State:狀態類(抽象狀態和具體狀態)
- Context:上下文
- StateApp:客戶端,測試狀態模式(酒店房間狀態管理案例)
- Observer:觀察者模式(22)
- Observer:觀察者類(抽象觀察者和具體觀察者)
- Subject:目標類(目標父類和目標子類)
- ObserverApp:客戶端,測試觀察者模式(推式廣播案例)
- jdk:基於jdk類庫實現觀察者模式
- ConcreteObserverB:具體觀察者
- ConcreteSubjectB:目標子類
- ObserverBApp:客戶端,測試觀察者模式(推式廣播案例)
- Memento:備忘錄模式(23)
- Originator:源發器類
- Memento:備忘錄類
- CareTaker:負責人類
- MementoApp:客戶端,測試備忘錄模式(象棋悔棋案例)
- ChainOfResp:責任鏈模式(13)
運行環境
- jdk-1.7
- Intellij IDEA 2019.3