
设计模式
文章平均质量分 90
公众号:程序喵星人
这个作者很懒,什么都没留下…
展开
-
C++设计模式整理012-职责链模式、观察者模式、状态模式
目录18. 职责链模式18.1 实例219. 观察者模式19.1 示例220. 状态模式18. 职责链模式 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之前的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递,所有职责链将请求的发送者和请求的处理者解耦了。/** 关键代码:Handler...原创 2021-04-13 08:03:07 · 166 阅读 · 0 评论 -
C++设计模式整理011-备忘录模式和中介者模式
目录16. 备忘录模式16.1 实例217. 中介者模式17.1 实例216. 备忘录模式 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原来保存的状态。 备忘录模式中需要定义的角色类: 1. Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要...原创 2021-04-13 08:03:02 · 182 阅读 · 0 评论 -
C++设计模式整理010-装饰者模式
目录15. 装饰模式15.1 实例215.2 实例315. 装饰模式 装饰模式:动态地给一个对象添加一些额外的功能,它是通过创建一个包装对象,也就是装饰来包裹真实的对象。新增加功能来说,装饰器模式比生产子类更加灵活。 以下情形考虑使用装饰模式: 1. 需要扩展一个类的功能,或给一个类添加附加职责。 2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。 ...原创 2021-04-13 08:02:55 · 139 阅读 · 0 评论 -
C++设计模式整理009-享元模式和桥接模式
目录13. 享元模式13.1 实例214. 桥接模式14.1 实例213. 享元模式 享元模式:运用共享技术有效地支持大量细粒度的对象。在有大量对象时,把其中共同的部分抽象出来,如果有相同的业务请求,直接返回内存中已有的对象,避免重新创建。 以下情况可以考虑使用享元模式: 系统中有大量的对象,这些对象消耗大量的内存,且这些对象的状态可以被外部化。 对于享元模式,需要将对象的信息分为两个部分:内部状态和...原创 2021-04-13 08:02:49 · 319 阅读 · 0 评论 -
C++设计模式整理008-组合模式和代理模式
目录11. 组合模式11.1 实例212. 代理模式12.1 实例211. 组合模式 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得客户端对单个对象和组合对象的使用具有一致性。 既然讲到以树形结构表示“部分-整体”,那可以将组合模式想象成一根大树,将大树分成树枝和树叶两部分,树枝上可以再长树枝,也可以长树叶,树叶上则不能再长出别的东西。 以下情况可以考虑使用组合模式: 1....原创 2021-04-13 08:02:41 · 941 阅读 · 0 评论 -
C++设计模式整理007-外观模式
目录10. 外观模式10.1 实例210. 外观模式 外观模式:为子系统中的一组接口定义一个一致的界面;外观模式提供一个高层的接口,这个接口使得这一子系统更加容易被使用;对于复杂的系统,系统为客户端提供一个简单的接口,把负责的实现过程封装起来,客户端不需要连接系统内部的细节。 以下情形建议考虑外观模式: 1. 设计初期阶段,应有意识的将不同层分离,层与层之间建立外观模式。 2. 开发阶段,子系...原创 2021-04-13 08:02:33 · 113 阅读 · 0 评论 -
C++设计模式整理006-原型模式、模板模式和建造者模式
目录7. 原型模式7.1 实例27. 原型模式 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。通俗的讲就是当需要创建一个新的实例化对象时,我们刚好有一个实例化对象,但是已经存在的实例化对象又不能直接使用。这种情况下拷贝一个现有的实例化对象来用,可能会更方便。 以下情形可以考虑使用原型模式: 1. 当new一个对象,非常繁琐复杂时,可以使用原型模式来进行复制一个对象。比如创建对象时,构造函数的参数很多...原创 2021-04-12 20:49:37 · 171 阅读 · 0 评论 -
C++设计模式整理005-单例模式
目录6. 单例模式6.1 懒汉单例模式6.2 饿汉单例模式6.3 实例36. 单例模式 单例模式顾名思义,保证一个类仅可以有一个实例化对象,并且提供一个可以访问它的全局接口。实现单例模式必须注意一下几点: 1. 单例类只能由一个实例化对象。 2. 单例类必须自己提供一个实例化对象。 3. 单例类必须提供一个可以访问唯一实例化对象的接口。 单例模式分为懒...原创 2021-04-12 20:44:00 · 198 阅读 · 0 评论 -
C++设计模式整理004-适配器模式
目录5. 适配器模式5.1 举例15.2 举例24.3 举例35. 适配器模式 适配器模式可以将一个类的接口转换成客户端希望的另一个接口,使得原来由于接口不兼容而不能在一起工作的那些类可以在一起工作。 通俗的讲就是当我们已经有了一些类,而这些类不能满足新的需求,此时就可以考虑是否能将现有的类适配成可以满足新需求的类。适配器类需要继承或依赖已有的类,实现想要的目标接口。 主要目的:在满足新需求的同时,不改动原有代码,扩展代码适应新需求。...原创 2021-04-12 20:37:26 · 92 阅读 · 0 评论 -
C++设计模式整理003-策略模式
目录4. 策略模式4.1 举例14.2 举例24.3 举例34. 策略模式 策略模式是指定义一系列的算法,把它们单独封装起来,并且使它们可以互相替换,使得算法可以独立于使用它的客户端而变化。也是说这些算法所完成的功能类型是一样的,对外接口也是一样的,只是不同的策略为引起环境角色环境角色表现出不同的行为。 相比于使用大量的if...else,使用策略模式可以降低复杂度,使得代码更容易维护。 缺点:可能需要定义大量的策略类,并且这些策略类...原创 2021-04-12 20:30:40 · 108 阅读 · 0 评论 -
C++设计模式整理002-工厂模式
目录3. 工厂模式3.1 简单工厂模式3.2 工厂方法模式3.3 抽象工厂模式3.4 模式UML图3. 工厂模式 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式作为一种创建模式,一般在创建复杂对象时,考虑使用;在创建简单对象时,建议直接new完成一个实例对象的创建。3.1 简单工厂模式 主要特点是需要在工厂类中做判断,从而创造相应的产品,当增加新产品时,需要修改工厂类。使用简单工...原创 2021-04-12 20:22:07 · 110 阅读 · 0 评论 -
C++设计模式整理001-原则和分类
目录1. 六大原则1.1 单一职责原则1.2 开放封闭原则1.3 依赖倒置原则(Dependence Inversion Principle)1.4 里式转换原则(Liskov Substitution Principle)1.5 接口隔离原则(Interface Segregation Principle)1.6 迪米特原则(Demeter Principle)1.7 合成复用原创(Composite Reuse Principle)2. 设计模式分类2.1 创建型原创 2021-04-12 19:29:07 · 245 阅读 · 0 评论