設計模式——自用查閱源碼(Java版本)

設計模式自用查閱源碼(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種。

軟件架構

  1. 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:測試使用原型模式創建對象的效率
  2. StructuralPattern:結構型模式

    • Adapter:適配器模式(6)
      • Adaptee:被適配類
      • Target:目標接口
      • Adapter01:類適配器
      • AdapterApp01:客戶端,測試類適配器(電腦接口轉接適配器案例)
      • Adapter02:對象適配器
      • AdapterApp02:客戶端,測試對象適配器(電腦接口轉接適配器案例)
    • Proxy:代理模式(7)
      • StaticProxy:靜態代理
        • Singer:抽象角色
        • RealSinger:真實角色
        • SingerProxy:代理角色
        • StaticProxyApp:客戶端,測試靜態代理(歌手演出案例)
      • DynamicProxy:動態代理(JDK自帶)
        • Singer:抽象角色
        • RealSinger:真實角色
        • SingerHandler:處理器
        • DynamicProxyApp:客戶端,測試動態代理(歌手演出案例)
    • 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:客戶端,測試享元模式(圍棋棋子移動案例)
  3. 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:客戶端,測試備忘錄模式(象棋悔棋案例)

運行環境

  1. jdk-1.7
  2. Intellij IDEA 2019.3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章