23种设计模式
之间的访问。
结构图
角色与理解
核心代码
享元模式(FlyweightPattern)(实现对象的复用)
定义
结构图
将系统中细粒度的相同的或者
相似的对象以共享的方式存放
在享元池中供客户端使用。
01
02
角色与理解
03
04
核心代码
代理模式(ProxyPattern)(控制对象的访问)
2014 2015 2016 2017
工厂模式 (Fa ctor yPa t t er n )
简单工厂模式 (SimpleFactor
yPattern)
工厂方法模式 (Factor yM eth
odPattern)
抽象工厂模式 (AbstractFact
or yPa tter n )
简单工厂模式(SimpleFactor yPattern)
04 核心代 码
建造者模式(BuilderPattern)(复杂对象的构建)
定义
结构图
将一个复杂对象的构建与它
的表示分离,使同样的构建 过程可以创建不同的表示
01
02
角色与理解
03
04
核心代码
结构型 (StructuralPatter ns)
适配器模式(AdapterPattern)(不兼容结构的协调)
定义
通过一个代理对象或者占位符来控制对原对象的访问。
结构图
角色与理解
核心代码
行为型 (BehavioralPatte rns)
责任链模式 (ChainOfResponsibilityPatter n)(请求的链式处理)
定义 将请求发送者和请求接受者解
耦,让请求的接受者形成链式操 作,所有人都能够接受接受到请 求,直到有人处理请求。
设计模式原则
迪米特法则(Law of Demeter, LoD )
一个软件实体应当尽可能少地与其他实体发生相互作用。**类与类 之间的耦合度应尽量的低,这样如果类发生变化,影响才会最小。 不要和陌生人说话,只和你的直接朋友通信,直接朋友包含如下: 当前对象本身(this)作为参数的对象成员变量集合成员变量中的 元素创建的对象可以通过使用第三者类来降低两个类的耦合度。
结构图
解释器模式(InterpreterPattern)(树形结构的处理)
1 定义
定义一个语言的文法,并创建一个解释 器去解释该语言中的句子,这里的“语 言”是指使用规定格式和语法的代码。
3 角色与理解
2 结构图 4 核心代码
迭代器模式(IteratorPattern)(遍历聚合对象中的元素)
壹
角色与理解
结构图 核心代码
抽象工厂模式(AbstractFactor yPattern)
1
定义
提供一个创建一系 列相关或者相互依 赖的类的工厂接口, 他包含多个产品类 的工厂方法,及一 个工厂类能够创建
多个产品。
2 结构图
3 角色与理解
4 核心代码
创建型 (Constructio nalPatterns)
设计模式原则
合成复用原则(Composite Reuse Principle, CRP)
尽量使用对象组合,而不是继承来达到复用的目的通过继承来实现复用的问题是 它会破坏封装性,子类能够看到基类的实现细节,自身类通过继承而来的基类方 法是静态的(因为继承的类是确定的),而通过调用成员变量去执行成员变量的 方法是动态的,因为成员变量可以是抽象化的,而实现类可以有很多种,每一种 实现类的功能又不相同,但是他们可以被当作同一类型而被引入。
定义
提供一种方法来访问聚合对 象中的元素,而不用暴露聚 合对象的内部表示,其别名 为游标(cursor)。
叁 角色与理解
贰 结构图 肆 核心代码
式。
结构图
角色与理解
核心代码
组合模式(CompositePattern)(树形结构的处理)
核心代码 角色与理解
47% Option 4
30% Option 3
23% Option 1
56% Option 2
定义
组合多个对象形成树形结构以表 示“整体-部分”的关系的层次结 构。组合模式对叶子节点和容器 节点的处理具有一致性,又称为 整体-部分模式。
23种设计模式
演讲人
2 0 2 5 - 11 - 11
目录
01. 设计模式原则
02.
创建型(ConstructionalPatterns)
03.
结构型(StructuralPatterns)
04.
行为型(BehavioralPatterns)
05. 自由主题
设计模式原则
设计模式原则
开闭原则(Open Close Principle, OCP)
创建型 (ConstructionalP atterns)
创建型(ConstructionalPatterns)
单例模式 (SingletonPattern) (确保对象的唯一性)
01
02
原型模式 (PrototypePatter
n)(对象的克隆)
03
04
工厂模式 ( Fa c tor yPatte r n)
建造者模式 (BuilderPattern) (复杂对象的构建)
创建型(ConstructionalPatterns)
单例模式(SingletonPattern)(确保对象的唯一性)
01
定义
02
角色与 理解
03
核心代 码
单例模式(SingletonPattern)(确保对象的唯一性)
定义
角色与理解
设计模式原则
依赖倒转原则(Dependence Inversion Principle,DIP)
抽象不应该依赖于细节,细节应当依赖于抽 象。换言之,要针对接口编程,而不是针对实现 编程依赖倒转原则要求我们在程序代码中传递参 数时或在关联关系中,尽量引用层次高的抽象层 类,即使用接口和抽象类进行变量类型声明、参 数类型声明、方法返回类型声明,以及数据类型 的转换等,而不要用具体类来做这些事情。在实 现依赖倒转原则时,我们需要针对抽象层编程, 而将具体类的对象通过依赖注入(Dependency Injection, DI)的方式注入到其他对象中,依赖 注入是指当一个对象要与其他对象发生依赖关系 时,通过抽象来注入所依赖的对象。常用的注入 方式有三种,分别是:构造注入,设值注入 (Setter注入)和接口注入。构造注入是指通过 构造函数来传入具体类的对象,设值注入是指通 过Setter方法来传入具体类的对象,而接口注入 是指通过在接口中声明的业务方法来传入具体类 的对象。
依赖倒转原则(Dependence Inversion Principle,DIP)
接口隔离原则(Interface Segregation Principle, ISP)
里氏替换原则(Liskov Substitution Principle,LSP)
单一职能原则(Single Responsibility Principle, SRP)
员变量,引用类型的成员变量没有被复制 深拷贝:当对象被复制时,对象本身、值类型成员变量、引 用类型成员变量都会被复制,原型对象与复制对象完全独立 核心代码
创建型 (ConstructionalPatt erns)
建造者模式(BuilderPattern)(复 杂对象的构建)
01 定义
02 结构图
03 角色与 理解
结构图
角色与理解
核心代码
命令模式(CommandPattern)(请求发送者与请求接收者解耦)
核心代码 角色与理解
47% Option 4
30% Option 3
23% Option 1
56% Option 2
定义
将一个请求封装为一个对象,从 而让我们可用不同的请求对客户 进行参数化;对请求排队或者记 录请求日志,以及支持可撤销的 操作。其别名为动作(Action)模 式 或 事 务 (Tran sact ion) 模式。
结构图
装饰模式(DecoratorPattern)(拓展系统功能)
定义
动态的给一个对象增 加一些职能,相对与 生成子类更加灵活。
结构图
角色与理解
核心代码
注意事项
门面模式(FacadePattern)(子系统的统一入口)
定义
又称为门面模式,为子 系统中一组接口提供一 个统计的入口。外观模 式定义了一个高层接口, 方便了客户端与子系统
确保某个类只有一个实例, 并且自行实例化并向整个 系统提供这个实例,这个 类称为单例类,它提供全
局访问的方法。
单例模式只包含一种角色 那就是单例角色,
Singleton(单例)。 单例模式有单个要点:这 个类只有一个实例它自行 创建这个实例它自行向整
个系统提供这个实例
核心代码
创建型 (Constructio nalPatterns)
1
定义
定义一个工厂类, 并提供一个抽象工 厂方法,该方法通 过传入不同的入参 而制造出特定的产 品,且所有产品具
有共同的父类。
2 结构图
3 角色与理解
4 核心代码
工厂方法模式(Factor yMethodPattern)
定义
定义一个用于创建对象的接口,让子类决定将哪一个产品实例化。工厂 方法模式让一个类的实例化延迟到工厂类的子类。工厂方法模式简称为 工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。
原型模式(PrototypePattern)(对 象的克隆)