设计模式
2023-03-22 15:35:31 6 举报
设计模式
作者其他创作
大纲/内容
行为型模式
访问者模式 Visitor 特点:
是一种将数据操作和数据结构分离的设计模式
是一种将数据操作和数据结构分离的设计模式
写法
模板方法模式 Template 特点:
定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤
定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤
写法
策略模式 Strategry 特点:
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户
写法
状态模式 State 特点:
对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为
对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为
写法
观察者模式 Observer 特点:
多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。
观察者模式,存在推模式 和 拉模式
多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。
观察者模式,存在推模式 和 拉模式
写法
备忘录模式 Memento 特点:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。
该模式又叫快照模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。
该模式又叫快照模式
写法
中介者模式 Mediator 特点:
模块之间有非常复杂的互相之间的跟蜘蛛网一样的调用
问题,每个模块都要去care很多其他的模块,互相之间耦合很严重
后面在修改代码的时候,代码不好改,模块B一旦修改了自己的代码,可能会影响模块A和模块C
模块之间有非常复杂的互相之间的跟蜘蛛网一样的调用
问题,每个模块都要去care很多其他的模块,互相之间耦合很严重
后面在修改代码的时候,代码不好改,模块B一旦修改了自己的代码,可能会影响模块A和模块C
写法
迭代器模式 Iterator 特点:
提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示
提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示
写法
命令模式 Command 特点:
将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开
将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开
写法
责任链模式 Chain 特点:
为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;
当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止
为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;
当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止
写法
网上资料
https://refactoringguru.cn/design-patterns/chain-of-responsibility
创建型模式
单例模式 Singleton(5种写法)特点及写法:
1、单例类只能有一个实例;
2、单例类必须自己创建自己的唯一实例;
3、单例类必须给所有其他对象提供这一实例;
1、单例类只能有一个实例;
2、单例类必须自己创建自己的唯一实例;
3、单例类必须给所有其他对象提供这一实例;
懒汉式
饿汉式
双检锁
静态内部类
枚举
工厂模式 Factory(3种写法)特点及写法:
该模式用于封装和管理对象的创建,是一种创建型模式
该模式用于封装和管理对象的创建,是一种创建型模式
简单工厂模式(Simple Factory)
工厂方法模式(Factory Method)
抽象工厂模式(Abstract Factory)
原型模式 Prototype 特点:
系统中存在大量相同、相似的实体,如果每次都通过传统的set方法去创建、去赋值,
那么构建的方式繁杂而已无任何意义。 但通过原型模式去生成那么会方便很多;
系统中存在大量相同、相似的实体,如果每次都通过传统的set方法去创建、去赋值,
那么构建的方式繁杂而已无任何意义。 但通过原型模式去生成那么会方便很多;
写法
建造者模式 Builder 特点:
将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成
将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成
写法
结构型模式
适配器模式 Adapter 特点:
在开发过程中,我们会经常遇到一个接口,更新迭代的时候;
遇到该场景时候,估计大多数程序员都是,新建一个接口,
由新版的接口兼容了旧版本的接口去做,但是由此引发的问题是,新版接口经常是存在旧版本的代码基础上进行改造的;
那么由此,就引发出适配器模式来改造接口,我们可以基于适配器模式,在不改动旧版本接口前提下,在此基础上新增逻辑
同时适配器模式一下几种写法:
类适配器模式、对象适配器模式
在开发过程中,我们会经常遇到一个接口,更新迭代的时候;
遇到该场景时候,估计大多数程序员都是,新建一个接口,
由新版的接口兼容了旧版本的接口去做,但是由此引发的问题是,新版接口经常是存在旧版本的代码基础上进行改造的;
那么由此,就引发出适配器模式来改造接口,我们可以基于适配器模式,在不改动旧版本接口前提下,在此基础上新增逻辑
同时适配器模式一下几种写法:
类适配器模式、对象适配器模式
类适配器模式
对象适配器模式
桥接模式 Bridge 特点及写法:
由于抽象与实现分离,所以扩展能力强
其实现细节对客户透明
由于抽象与实现分离,所以扩展能力强
其实现细节对客户透明
写法
组合模式 Composite 特点:
对象组合成树形结构以表示“部分-整体”的层次结构
组合模式使得用户可以使用一致的方法操作单个对象和组合对象
对象类似一个树形结构,每一个对象的操作类型以及方式都是通用的
对象组合成树形结构以表示“部分-整体”的层次结构
组合模式使得用户可以使用一致的方法操作单个对象和组合对象
对象类似一个树形结构,每一个对象的操作类型以及方式都是通用的
写法
装饰器模式 Decorator 特点:
指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式
指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式
写法
门面(外观)模式 Facade 特点:
门面模式,主要是针对多个子系统需要统一对外提供接口,
但如果提供十几个子系统接口同时对外的话,变成非常复杂,
所以衍生出来,我们将统一十几个子系统统一封装成一个对外接口提供服务
门面模式,主要是针对多个子系统需要统一对外提供接口,
但如果提供十几个子系统接口同时对外的话,变成非常复杂,
所以衍生出来,我们将统一十几个子系统统一封装成一个对外接口提供服务
写法
享元模式 Flyweight 特点:
享元:享受、元数据;
将系统中的元数据,缓存起来,方便后续所有对象的使用
我们现在将数据存放在 memcache、redis、内存中,都是享元模式的体现
享元:享受、元数据;
将系统中的元数据,缓存起来,方便后续所有对象的使用
我们现在将数据存放在 memcache、redis、内存中,都是享元模式的体现
写法
代理模式 Proxy 特点:
给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用
通俗的来讲代理模式就是我们生活中常见的中介
代理模式分为三类:1. 静态代理 2. 动态代理 3. CGLIB代理
给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用
通俗的来讲代理模式就是我们生活中常见的中介
代理模式分为三类:1. 静态代理 2. 动态代理 3. CGLIB代理
写法
0 条评论
下一页