![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
18189298828
Linux狂热爱好者
展开
-
设计模式-代理模式
1.代理模式定义为其他对象提供⼀种代理以控制对这对象的访问。2.代理模式遵循的模式设计原则3.要点a.远程代理(隐藏⼀个对象存在不同的地址空间的事实),虚代理(延迟加载lazyload),保护代理(在代理前后做额外操作,权限管理,引⽤计数等);b.在分布式系统中,actor模型(skynet)等常⽤的设计模式;4.本质控制对象访问;5.代码在有些系统中,为了某些对象的纯粹性,只进⾏了功能相关封装(稳定点),后期添加了其他功能需要对该对象进⾏额外操作(变化点),为了隔离变化点(也就是不直接在原创 2021-11-14 10:20:05 · 339 阅读 · 0 评论 -
模式设计-适配器模式
1.适配器模式定义将⼀个类的接⼝转换成客户希望的另⼀个接⼝。Adapter模式使得原本由于接⼝不兼容⽽不能⼀起⼯作的那些类可以⼀起⼯作。2.适配器模式遵循的模式设计原则3.要点a.原来的接⼝是稳定的,新的外来的需求是变化的,那么可以通过继承原来的接⼝,让原来的接⼝继续保持稳定,在⼦类通过组合的⽅式来扩展功能;4.本质转换匹配,复⽤功能;5.代码⽇志系统,原来是通过写磁盘的⽅式进⾏存储,后来因为查询不便,需要额外添加往数据库写⽇志的功能(写⽂件和数据库并存);#include <str原创 2021-11-14 09:12:53 · 150 阅读 · 0 评论 -
设计模式-装饰器模式
1.装饰器模式定义动态地给⼀个对象增加⼀些额外的职责。就增加功能⽽⾔,装饰器模式⽐⽣成⼦类更为灵活。2.责任链模式遵循的模式设计原则3.要点a.通过采⽤组合⽽⾮继承的⼿法, 装饰器模式实现了在运⾏时动态扩展对象功能的能⼒,⽽且可以根据需要扩展多个功能。 避免了使⽤继承带来的“灵活性差”和“多⼦类衍⽣问题”。b.不是解决“多⼦类衍⽣的多继承”问题,⽽是解决“⽗类在多个⽅向上的扩展功能”问题;c.装饰器模式把⼀系列复杂的功能分散到每个装饰器当中,⼀般⼀个装饰器只实现⼀个功能,实现复⽤装饰器的功能;原创 2021-11-11 22:26:12 · 53 阅读 · 0 评论 -
设计模式-责任链模式
1.责任链模式定义使多个对象都有机会处理请求,从⽽避免请求的发送者和接收者之间的耦合关系。将这些对象连成⼀条链,并沿着这条链传递请求,直到有⼀个对象处理它为⽌。2.责任链模式遵循的模式设计原则3.要点a.解耦请求⽅和处理⽅,请求⽅不知道请求是如何被处理,处理⽅的组成是由相互独⽴的⼦处理构成,⼦处理流程通过链表的⽅式连接,⼦处理请求可以按任意顺序组合;b.责任链请求强调请求最终由⼀个⼦处理流程处理;通过了各个⼦处理条件判断;c.责任链扩展就是功能链,功能链强调的是,⼀个请求依次经由功能链中的⼦处理原创 2021-11-09 23:36:11 · 74 阅读 · 0 评论 -
设计模式-策略模式
1.策略模式定义定义⼀系列算法,把它们⼀个个封装起来,并且使它们可互相替换。该模式使得算法可独⽴于使⽤它的客户程序⽽变化。2.策略模式遵循的模式设计原则3.要点a.策略模式提供了⼀系列可重⽤的算法,从⽽可以使得类型在运⾏时⽅便地根据需要在各个算法之间进⾏切换;b.策略模式消除了条件判断语句;就是在解耦合;c.充分体现了开闭原则;单⼀职责;4.本质分离算法,选择实现;5.代码某商场节假⽇有固定促销活动,为了加⼤促销⼒度,现提升国庆节促销活动规格;5.1 版本1enum Vacation原创 2021-11-07 21:25:23 · 48 阅读 · 0 评论 -
设计模式-单例模式
1.单例模式定义保证⼀个类仅有⼀个实例,并提供⼀个该实例的全局访问点。2.单例模式遵循的模式设计原则3.要点4.本质5.代码5.1 版本1// 内存栈区// 内存堆区// 常数区// 静态区 系统释放// ⼆进制代码区class Singleton {版本2版本3public:static Singleton * GetInstance() {if (_instance == nullptr) {_instance = new Singleton();}return原创 2021-11-07 20:38:52 · 62 阅读 · 0 评论 -
设计模式-观察者模式
1.观察者模式定义 定义对象间的⼀种⼀对多(变化)的依赖关系,以便当⼀个对象(Subject)的状态发⽣改变时,所有依赖于它的对象都得到通知并⾃动更新。2.观察者模式遵循的模式设计原则3.要点 a.观察者模式使得我们可以独⽴地改变⽬标与观察者,从⽽使⼆者之间的关系松耦合; b.观察者⾃⼰决定是否订阅通知,⽬标对象并不关注谁订阅了; c.观察者不要依赖通知顺序,⽬标对象也不知道通知顺序; d.常使⽤在基于事件的ui框架中,也是MVC的组成部分; e.常使⽤在分布式系统中,actor框架中;原创 2021-11-06 22:21:10 · 80 阅读 · 0 评论 -
设计模式-模板模式
1.模板方法定义 定义⼀个操作中的算法的⻣架 ,⽽将⼀些步骤延迟到⼦类中。Template Method使得⼦类可以不改变⼀个算法的结构即可重定义该算法的某些特定步骤。2.模板模式遵循的设计模式的原则 依赖倒置原则:⾼层模块不应该依赖低层模块,⼆者都应该依赖抽象;抽象不应该依赖具体实现,具体实现应该依赖于抽象; 单一职责原则:⼀个类应该仅有⼀个引起它变化的原因; 接口隔离原则:不应该强迫客户依赖于他们不⽤的⽅法;⼀般⽤于处理⼀个类拥有⽐较多的接⼝,⽽这些接⼝涉及到很多职责;3.要点 a.⾮原创 2021-11-06 21:24:47 · 145 阅读 · 0 评论