随笔分类 -  设计模式C++

摘要:23种设计模式c++ 本文参考学习链接:https://www.cnblogs.com/chengjundu/p/8473564.html 一、创建型 创建型模式(Creational Pattern)是对类的实例化过程的抽象化,能够提供对象的创建和管理职责。创建型模式共有5种: 1. Factor 阅读全文
posted @ 2020-11-08 14:14 昨日明眸 阅读(10944) 评论(0) 推荐(3)
摘要:23. Visitor(访问者) 23.1定义 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作 23.2 优点 ■ 访问者模式使得增加新的操作变得很容易,增加新的操作只需要增加新的访问者类。 ■ 访问者模式将有关的行为集中到一个访问者对象中,而 阅读全文
posted @ 2020-11-08 14:13 昨日明眸 阅读(468) 评论(0) 推荐(0)
摘要:22. Strategy(策略) 22.1 定义 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换,使得算法可以在不影响到客户端的情况下发生变化 22.2 优点 ■ 策略模式提供了管理相关的算法族的 阅读全文
posted @ 2020-11-08 14:12 昨日明眸 阅读(958) 评论(0) 推荐(0)
摘要:21. 21.1 定义 当一个对象内在状态改变时允许改变行为,这个对象看起来像改变了其类型。状态模式的核心是封装,状态的变更引起行为的变动,从外部看来就好像该对象对应的类发生改变一样 21.2 优点 ■ 结构清晰。 ■ 遵循设计原则。 ■ 封装性非常好。 21.3 缺点 ■ 子类太多,不易管理。 2 阅读全文
posted @ 2020-11-08 14:11 昨日明眸 阅读(737) 评论(0) 推荐(0)
摘要:19. Memento(备忘录) 19.1 定义 不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样,以后就可以将该对象恢复到原先保存的状态。 19.2 使用场景 ■ 需要保存和恢复数据的相关状态场景。 ■ 提供一个可回滚的操作。 ■ 需要监控副本的场景。例如,监控一个对 阅读全文
posted @ 2020-11-08 14:10 昨日明眸 阅读(151) 评论(0) 推荐(0)
摘要:20. Observer(观察者) 20.1 定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新 20.2 优点 ■ 观察者和被观察者之间是抽象耦合。被观察者角色所知道的只是一个具体观察者集合,每一个具体观察者都符合一个抽象观察者的接口。被观 阅读全文
posted @ 2020-11-08 14:09 昨日明眸 阅读(771) 评论(0) 推荐(0)
摘要:18. Mediator(中介者) 18.1 定义 用一个中介对象封装一系列对象(同事)的交互,中介者使各对象不需要显式地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 18.2 优点 ■ 减少类间的依赖,将原有的一对多的依赖变成一对一的依赖,使得对象之间的关系更易维护和理解。 ■ 阅读全文
posted @ 2020-11-08 14:08 昨日明眸 阅读(372) 评论(0) 推荐(0)
摘要:17. Iterator(迭代器) 17.1 定义 提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节 17.2 优点 ■它支持以不同的方式遍历一个聚合对象。 ■迭代器简化了聚合类。 ■在同一个聚合上可以有多个遍历。 ■在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有 阅读全文
posted @ 2020-11-08 14:07 昨日明眸 阅读(128) 评论(0) 推荐(0)
摘要:15. Chain of Responsibility(责任链) 15.1 定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 15.2 优点 ■ 责任链模式将请求和处理分开,请求者不知道是谁处理的,处 阅读全文
posted @ 2020-11-08 14:06 昨日明眸 阅读(105) 评论(0) 推荐(0)
摘要:16. Command(命令) 16.1 定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 16.2.优点 ■ 类间解耦。调用者角色与接收者角色之间没有任何依赖关系,调用者实现功能时只需要调用Command中的execu 阅读全文
posted @ 2020-11-08 14:05 昨日明眸 阅读(1168) 评论(0) 推荐(0)
摘要:14. Template Method(模板方法) 14.1 定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 14.2 优点 ■ 封装不变的部分,扩展可变部分。不变的部分封装到父类中实现,而可变的部分则可以通过继承进行扩展 阅读全文
posted @ 2020-11-08 14:01 昨日明眸 阅读(91) 评论(0) 推荐(0)
摘要:12. Proxy(代理) 12.1 定义 为其他对象提供一种代理以控制对这个对象的访问 按照使用目的可以将代理划分为以下几种。 ■ 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局部代表对象。这个不同的地址空间可以是在本机器中,也可以在另一台机器中。 ■ 虚拟(Virtual)代 阅读全文
posted @ 2020-11-08 13:59 昨日明眸 阅读(450) 评论(0) 推荐(0)
摘要:13. Interpreter(解释器) 13.1定义 给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子 13.2 优点 ■ 简单的语法分析工具。 ■ 扩展性,修改语法规则只要修改相应的非终结符表达式即可,若扩展语法,则只要增加非终结符类即可。 13.3 阅读全文
posted @ 2020-11-08 13:57 昨日明眸 阅读(1083) 评论(0) 推荐(0)
摘要:11.1定义 使用共享对象可有效地支持大量的细粒度的对象。享元模式是以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内部状态(Internal State)和外部状态(External State)。 ■ 内部状态是存储在享元对象内部的、可以共享的信息,并且不会随环境改变而改变 阅读全文
posted @ 2020-11-08 13:55 昨日明眸 阅读(101) 评论(0) 推荐(0)
摘要:10. Facade(外观) 10.1定义 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易使用。 10.2 优点 ■ 减少系统的相互依赖,所有的依赖都是对Façade对象的依赖,与子系统无关。 ■ 提高灵活性,不管子系统内部如何变化,只要不 阅读全文
posted @ 2020-11-08 13:52 昨日明眸 阅读(98) 评论(0) 推荐(0)
摘要:9. Decorator(装饰) 9.1定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。 9.2.优点 ■ 装饰类和被装饰类可以独立发展,而不会相互耦合。即 Component 类无须知道Decorator类,Decorator类是从外部来扩展Component 阅读全文
posted @ 2020-11-06 10:01 昨日明眸 阅读(137) 评论(0) 推荐(0)
摘要:8. Composite(组合) 8.1定义 将对象组合成树形结构以表示“部分—整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性 8.2 优点 ■ 高层模块调用简单。一棵树形机构中的所有节点都是 Component,局部和整体对调用者来说没有任何区别,即高层模块不必关心自己处理的是单个 阅读全文
posted @ 2020-11-05 14:32 昨日明眸 阅读(405) 评论(0) 推荐(0)
摘要:7. Bridge(桥接) 7.1 定义 将抽象和实现解耦,使得两者可以独立地变化 7.2 优点 ■ 抽象和实现分离是桥梁模式的主要特点,是为了解决继承的缺点而提出的设计模式。在该模式下,实现可以不受抽象的约束,不用绑定在一个固定的抽象层次上。 ■ 实现对客户透明,客户端不用关心细节的实现,它已经由 阅读全文
posted @ 2020-11-05 14:31 昨日明眸 阅读(559) 评论(0) 推荐(0)
摘要:6. Adapter Class/Object(适配器) 结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构。结构型模式的目的是通过组合类或对象产生更大结构以适应更高层次的逻辑需求, 6.1 定义 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因 阅读全文
posted @ 2020-11-03 21:18 昨日明眸 阅读(77) 评论(0) 推荐(0)
摘要:5. Singleton(单例) 5.1 定义 确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 5.2 应用 单例模式的主要作用是确保一个类只有一个实例存在。单例模式可以用在建立目录、数据库连接等需要单线程操作的场合,用于实现对系统资源的控制。 5.3 懒汉单例模式 5.3.1 定义 阅读全文
posted @ 2020-11-03 14:44 昨日明眸 阅读(210) 评论(0) 推荐(0)