白话11种常见的设计模式

129 阅读2分钟

只是说说个人的理解,有问题,可以告诉我吗,我来改正~

工厂模式

其实就是构造函数的创建,然后通过new来生成实例对象

抽象工厂模式

通过class创建类,然后可以相关继承,然后通过new来生成实例对象

单例模式

本质就是,无论创建多少次,都只返回最开始的创建的那个唯一实例,防止重复创建,导致操作数据丢失

装饰器模式

不改变原对象的,去新增一些逻辑(对其进行包装拓展),从而可以满足更复杂的需求

适配器模式

比如说对一个库进行封装或者修改修改,抹平差异,对接口统一适配,简单的说就是,封装复杂的底层逻辑,暴露简单的接口调用

代理模式

当我们不能访问到一个对象,但可以通过代理搭桥间接的去访问到,比如说事件代理,缓存代理(当我们需要用到某个已经计算过的值的时候,不想再耗时进行二次计算,而是希望能从内存里去取出现成的计算结果)

策略模式

就是可以根据不同的参数,来命中不同的策略

状态模式

可以根据不同的参数,来得到不同的结果,怎么类似于策略

观察者模式(和发布-订阅模式区别?)

意为让多个观察者去监听某一个目标对象,当目标对象发生变化时,会通知所有的观察者

大多时候认为观察者模式就是发布-订阅模式,如果非要说区别,如下:

白话举例:

观察者:一个发布者,直接把需求发给多个观察者

发布订阅:发布者把需求交给某个平台,然后这个平台收到后通知给了已经订阅了的观察者

发布者不直接触及到订阅者、而是由统一的第三方来完成实际的通信的操作,叫做发布-订阅模式

迭代器模式

就是遍历

中介者模式

对象与对象之间借助第三方中介者通信

比如说new 一个构造函数,但是这个构造函数中间引用了其他的实例(引用了new其他)

享元模式

笼统的说,就是如果有很多个数据都需要借助一个对象,我们不需要为每一个数据都创建一个对象,而是传递这个对象暴露出来的参数,来达到通过一个对象就可以实现每一个数据的功能