设计模式
设计模式总结
创建型
1.简单工厂
根据参数,如字符串、枚举等,反回创建的类。不属于Gof所说的。
2.工厂模式
抽象一层,选择一个需要的工厂,工厂有一个获取产品的方法,再从工厂取要的东西。
3.抽象工厂
对工厂抽象和产品抽象,创建一个产品族工厂,从产品族工厂中取东西。理论上每个工厂都能取到同类型的东西,但是属性不一样。
4.构建者模式
抽象一个item做衍生,以此做为产品,里面有公共的方法。使用一个builder,选装Item,把东西存起来。产品可以动态增删。
5.原型模式
使用当前已经存在的类,给予一个clone接口,用于克隆一份一样的、独立存在的类。
6.单例模式
一个对象,只有一个实例,私有创建的方法。大家共用同一个。
懒汉式,在第一次使用时才创建
饿汉式,编译构建时就创建,static成员
结构型
7.适配器模式
由底部根据需求实现匹配,自动返回适应的类型或者执行某些动作。
8.桥接模式
根据不同的上层产品,给入不同的内部数据,通过上层产品操作间接使用数据,展示的效果会不一样。
9.组合模式
把东西按关系进行划分,构成一棵树级结构。
10.装饰者模式
大家都会一个动作,但是又可以相互包装,A会画圆,B会画方,C的画画方法可以是让A、B一起来画,还可以加别的。
11.外观模式
使用一个上层包装,把多个具有某个关系的类放到一起。
12.享元模式
大家共享某部分数据,在没有的时候进行创建,下次再要这个类型时返回该值,减少创建。
13.代理模式
给一个类做一层包装,做一层扩展,做为代理人进行控制。
行为型
14.职责链模式
根据类关系,构建一条关系链,在上层需要处理数据时,可能需要和下层进行交互,可以达到相互传递,以完成处理。
15.命令模式
把需要做的事情包装成一个事件,通过一个中心控制,命令事件执行。
16.解释器模式
通过特定的功能分类,拆成一个一个解析器,使用不同的解析器去处理对应的数据,达到整体划分。
17.迭代器模式
常见于Stl中,用于高效遍历内容。
18.中介者模式
大家根据某个关系,注册在一个中心。然后都可以通过中心给的接口,查询到别人的信息和被别人找到。
19.备忘录模式
处理一个事件,在需要的时候保存一下(新建一份数据)存起来,使用者后面可以根据索引去找到这份保存的数据。
20.观察者模式
大家往一个地方注册,当发生事件时,注册了的类会收到需要的信息。参考QT信号槽。
21.状态模式
给一个物体塑造多个外表,根据需要设置外表,用该外表做为当前的状态,可随时切换。
22.策略模式
当前有一组数据,但是可以有多个处理的方法,其方法可能可以进行组合,把方法单独做为策略。组合出需要的场景。
23.模板模式
抽象一个模板,模板会有很多动作调用。实体可以选择实现某些动作,不需要的可以空实现。
24.访问者模式
每个事物关注同一个东西的角度都不同。通过元素的回调或者访问者主动查看,可以做不同的动作。
以上为Gof(Gang of Four)四人组提出的
25.pimpl
qt源码实现方式,将成员藏在cpp,不对外暴露。
26.业务代表
其中包含client、Delegate、lookup、service。使用者通过代理缓存,查找需要的服务。通过这样将业务进行分层解耦。
27.组合实体模式
组合实体太学术化了,不通俗。组合实体是个对象,是个管理者,管家,掌柜的,经理,它是直接面向客户的。组合实体下面是几个小组,也就是假如说它是个经理的话,那么它下面管理着几个小组长。小组长下面就是组员了呗,也就是真正干活的人了。所以组合实体是个层层管理的机制,并且下层的生命周期决定于上层的生命周期。就这么简单。我想它的作用只不过是简化了每一环的复杂程度而已。
https://www.it610.com/article/1177358433989488640.htm
28.过滤器模式
字面意思,通过一个过滤器,把输入的数据过滤掉不合理的,然后得到结果。
29.空模式
对于不些不合理的数据,给予一个空的对象,而不是空值。
30.mvc
model,存数据,更新时告诉C,view将数据做显示,controller作为中间传递数据和中间处理的一方。Qt中是MVD D是代理,包括C的功能,还有告诉V怎么去定制和绘制。
31.数据访问对象模式
将一些不好使用的接口包装进来,通过更上一层封装,使用时更便捷。
32.前端控制器模式
通过一个前端,把请求进行汇总再分发给特定的处理器。
33.拦截过滤器模式
通过实现多个过滤器,在发生事件时,使用注册了的过滤器对事件进行处理,通过后再去做相应的操作,否则拦截。
34.服务定位器模式
根据一个中心缓存,去查找或者说定位之前使用过的东西。
35.传输对象模式
把对象打包传送与接收。
本文标题:设计模式
文章作者:whppmy
发布时间:2023-03-04
最后更新:2022-08-31
原始链接:http://bugnull.com/无处安放/设计模式/
版权声明:个人记录,没有获取同意时,禁止转载!!