felix-cao / Blog

A little progress a day makes you a big success!
31 stars 4 forks source link

设计模式(Design Patterns) #138

Open felix-cao opened 5 years ago

felix-cao commented 5 years ago

设计模式(Design Patterns) 的定义是:在面向对象软件设计过程中针对而特定问题的简介而优雅的解决方案。 设计模式是经过了大量实际项目验证的优秀解决方案。 设计模式的主题总是把不变的事物和变化的事物分离开来。

设计模式 描述
单例模式 英文:Singleton
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
目的:把管理单例的职责和和创建实例对象的职责分离
策略模式 英文:Strategy
定义:定义一系列的算法,把他们一个个封装起来,并且使它们可以相互替换。
目的:将算法的使用和算法的实现分离开来
代理模式 英文:Proxy
为对象提供一个代用品和占位符,以便控制对它的访问
迭代器模式 英文: Iterator
定义:提供一种可以循环访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。
目的:把迭代的过程从业务逻辑中分离开来
发布-订阅模式 别名:观察者模式
定义:定义对象的一对多关系,当一个对象的状态发生改变时,所有依赖它的对象都将得到通知。
命令模式 英文:Command
定义:将一个请求以命令的形式封装为一个对象,使发出请求的责任和执行请求的责任分割开来。
组合模式 英文:Composite Pattern
定义:将对象组合成树形结构,以表示“部分-整体”的层次结构
好处:通过对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性。
模板方法模式 英文:Template Method
定义:一种只需使用继承就可以实现的非常简单的模式
组成:由两部分组成,第一部分是抽象父类,第二部分是具体的实现子类。
简述:通常在抽象父类中封装了子类的算法框架,包括实现一些公共方法以及封装子类中所有方法的执行
顺序。子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类的方法。
亨元模式 英文:flyweight, 享元模式是一种性能优化模式,核心是运用共享技术来有效支持大量细粒度的对象。
职责连模式 Chain of Responsibility Pattern
定义:一系列可能会处理请求的对象被连接成一条链,请求沿着这条链顺序传递,使多个对象都有机会处理
请求,直到有一个对象处理它为止。
中介者模式 Mediator Pattern
作用:解除对象与对象之间的紧耦合。增加一个中介者对象后,所有的相关对象都通过中介者对象来通信
而不是互相引用,所以当一个对象发生改变时,只需通知中介者对象即可。中介者模式使网状的多对多关
系变成了相对简单的一对多关系
装饰者模式 英文:Decorator
定义:动态的给某个对象添加额外的职责,而不会影响从这个类中派生的其他对象
状态模式 状态模式的关键是区分事物内部的状态,事物内部状态的改变旺旺会带来事物行为的改变。
适配器模式 别名:包装器(wrapper)
作用:解决两个已有接口之间不匹配的问题
felix-cao commented 2 years ago

策略,指计策;谋略。strategy [ˈstrætədʒi]

一般是指:

felix-cao commented 2 years ago

发布/订阅模式

发布-订阅模式(Publish-Subscribe:Pub/Sub),它是一种通知机制,让发送通知的一方(被观察方)和接收通知的一方(观察者)能彼此分离,互不影响。又称为「观察者模式」。 它的特点是:

在 JavaScript 开发中,一般使用事件模型来替代传统的发布订阅模式。

let i = 0;
document.body.addEventListener('click', () => {
  i++;
  console.log(`点击了 ${i} 次。`);
});

document.body.click(); // 点击了 1 次。
document.body.click(); // 点击了 2 次。
document.body.click(); // 点击了 3 次。
felix-cao commented 2 years ago

命令模式

将一个请求以命令的形式封装为一个对象,使发出请求的责任和执行请求的责任分割开来。

命令是指执行某些特定事情的指令集合。 这个对象就是一个命令对象

felix-cao commented 2 years ago

模板方法模式

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。

该模式的主要优点如下。

felix-cao commented 2 years ago

享元模式

享:共享 元:原子级,指,细粒度的对象