admin管理员组

文章数量:1661342

文章目录

  • 设计模式自用查阅源码(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

本文标签: 自用源码版本模式Java