will设计模式:26种
2024-07-27 16:52:23 0 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
背景
介绍23个GoF(四人组,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides)设计模式 + 简单工厂模式,一共是24个模式。
概念
是什么
是一种套编程思想
设计模式是一套被反复使用、代码设计经验的总结,一般与编程语言无关,是一套比较成熟的编程思想;
好处
重用、可读、可靠
使用设计模式的好处是:可重用代码、让代码更容易被他人理解、保证代码可靠性。
增强
重用性
可读性
可靠性
分类
根据目的、用途的不同(3)
一、创建型模式(6)
主要用于创建对象
1、简单工厂模式(Simple Factory Pattern)
一句话概括:由某个工厂根据参数的不同创建一个产品的实例。
2、工厂方法模式(Factory Method Pattern)
一句话概括:由抽象工厂的子类具体工厂,根据参数的不同创建一个产品的实例。
3、抽象工厂模式(Abstract Factory Pattern)
一句话概括:由抽象工厂的子类具体工厂,创建一组产品的实例。
4、单例模式(Singleton Pattern)
一句话概括:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
5、原型模式(Prototype Pattern)
一句话概括:一个对象实例的拷贝或克隆。
6、建造者模式(Builder Pattern)
一句话概括:完成一个复杂对象的组装与创建。
二、结构型模式(7)
主要用于处理如何组合类和对象
1、适配器模式(Adapter Pattern)
一句话概括:不同接口的匹配。
2、桥接模式(Bridge Pattern)
一句话概括:处理多维度的变化。
3、组合模式(Composite Pattern)
一句话概括:处理树形结构。
组合模式的关键是定义了一个抽象构件类,它既可以代表叶子,又可以代表容器,而客户端针对该抽象构件类进行编程,无须知道它到底表示的是叶子还是容器,可以对其进行统一处理。同时容器对象与抽象构件类之间还建立一个聚合关联关系,在容器对象中既可以包含叶子,也可以包含容器,以此实现递归组合,形成一个树形结构。
4、装饰模式(Decorator Pattern)
一句话概括:为对象动态添加职责,扩展系统功能。
5、外观模式(Facade Pattern)
一句话概括:为子系统中的一组接口提供一个统一的入口。
6、享元模式(Flyweight Pattern)
一句话概括:支持大量细粒度对象的复用。(相同或者相似对象的共享内存访问)
简概:复用对象,节约内存,提高性能
比如tableview cell的复用机制
比如内存分布中的静态区和常量区
7、代理模式(Proxy Pattern)
一句话概括:给某一个对象提供一个代理,并由代理对象来控制对原对象的访问。
记忆方法:双空插座,【适配器、桥接、组合】【装饰、外观】【享元、代理】
三、行为型模式(11)
主要用于描述类或对象的交互以及算法封装和职责分配。
交互、职责分配、算法封装
1、职责链模式(Chain of Responsibility Pattern)
一句话概括:将多个对象连接成一条链,并且沿着这条链传递请求。
场景举例:采购请求与领导审批
2、命令模式(Command Pattern)
一句话概括:对请求进行封装,一个请求对应一个命令,将请求发送者与接收者解耦。
用命令将调用者和接收者进行隔离
3、解释器模式(Interpreter Pattern)
一句话概括:定义一个语言的文法,并且建立一个解释器来解释该语言中的句子。
4、迭代器模式(Iterator Pattern)
一句话概括:遍历访问集合中的元素。
存储数据(聚合类)和遍历数据(迭代器类)的职责分离,为不同的聚合结构提供统一的遍历接口,同时提供不同的遍历实现算法
对外提供遍历的接口呢,同时也不暴露自己的私有属性。
5、中介者模式(Mediator Pattern)
一句话概括:用一个中介对象来封装一系列的对象交互。
优点
简化结构
将网状结构简化成星状结构
6、备忘录模式(Memento Pattern)
一句话概括:“后悔药”的实现,比如撤销功能。
7、观察者模式(Observer Pattern)
一句话概括:一种通知若干类发生变化的机制。
8、状态模式(State Pattern)
一句话概括:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。
9、策略模式(Strategy Pattern)
一句话概括:将算法的定义放在专门的策略类中,每一个具体策略类封装了一种实现算法。
10、模板方法模式(Template Method Pattern)
一句话概括:定义一个操作中算法的框架,而将一些步骤延迟到子类中。
11、访问者模式(Visitor Pattern)
一句话概括:在类不变的情况下定义一个新的操作。
记忆技巧,我的【职责】是【命令】【解释器、迭代器、中介者、备忘录、观察者】记录【状态、策略以及模板方法和访问者】
根据处理范围不同
类模式
类模式处理类与子类的关系,通过处理这些关系来建立继承,属于静态关系,在编译时候确定下来;
对象模式
对象模式处理对象之间的关系,运行时发生变化,属于动态关系。
类图
参考:
iOS 设计模式总览
Demo地址:iOS-Design-Patterns
阅读
【软件设计】GOF
https://www.processon.com/view/5d0894d9e4b0d13de7d7c7a3?fromnew=1
术语
耦合松散
迪米特法则
星型结构
分类
按照作用分类(24)(3)类:6、7、11
创造型:处理对象创建的设计模式
简单工厂
抽象工厂
单例
原型
创建者
行为型:处理类或对象交互以及职责分配和算法封装
便于记忆:我的【职责】是【命令】【解释器、迭代器、中介者、备忘录、观察者】记录【状态、策略以及模板方法和访问者】.
职责
命令
解释器
迭代器
中介者
备忘录
观察者
状态
策略
模板方法
访问者
结构型:处理类或对象如何组合
便于记忆:适配器桥接组合装饰外观享元代理
适配器
桥接
组合
装饰
外观
享元
代理
按照类或对象分类(24)(2)类:6、7、11
类
对象
按照设计原则分类
单一职责原则
开闭原则
里氏替换原则
依赖倒置原则
接口间隔离原则
迪米特法则
0 条评论
下一页