合集-设计模式

摘要:意图 当一个对象的内部状态改变时,改变其行为。 适用于对象的行为由它的状态决定时,或是一个方法中有多个分支,这些分支都依赖于对象的状态。 示例 class ServerState { public: virtual void connect() = 0; }; class Established : 阅读全文
posted @ 2025-02-16 15:40 cwtxx 阅读(2) 评论(0) 推荐(0) 编辑
摘要:动机 在面向对象的设计中,鼓励将行为封装到各自的对象中,这就会导致如果一个动作涉及多个类对象之间的互动时,往往导致类与类之间的关系错综复杂。显然,这不利于后续的维护和扩展。 中介者类似于“加一层”的思想,将涉及多个类对象之间的动作封装到中介者类中,由中介者进行协调控制,而其他的类对象只需要知道中介者 阅读全文
posted @ 2025-02-16 15:42 cwtxx 阅读(4) 评论(0) 推荐(0) 编辑
摘要:设计 职责链是行为型设计模式中的一种,关注的是请求发送对象和请求接收对象间的关系,目的是使一个请求被发出后,多个有关联的对象都可能有机会处理这个请求,避免了请求发送者和接收者间的耦合关系。让所有接收者连成一条链,然后请求在这条链上进行传播,直至有对象处理为止,而这些对象可以被动态地绑定。 示例代码 阅读全文
posted @ 2025-02-16 15:42 cwtxx 阅读(3) 评论(0) 推荐(0) 编辑
摘要:动机 观察者模式意图建立一种对象间一对多的关系,当一个对象中的状态发生改变时,所有依赖它的对象都会收到通知并自动同步更新。 示例 试想这样一种场景,有一组数据,可以通过不同的图表的方式被展示,比如柱状图、折线图、饼状图等等。虽然展示的方式不同,但数据应该是同样的一组,假设这组数据有一个数据对象关系, 阅读全文
posted @ 2025-02-16 15:46 cwtxx 阅读(4) 评论(0) 推荐(0) 编辑
摘要:意图 定义一系列的算法,把它们一个个地封装起来,并让它们可以互相替换。这样使得算法可以随时替换和变更,典型的比如超市的降价策略,同样的商品可能每天有不同的折扣。 示例 class DiscountStrategy { public: virtual void discount() = 0; }; c 阅读全文
posted @ 2025-02-16 15:54 cwtxx 阅读(1) 评论(0) 推荐(0) 编辑
摘要:抽象工厂 使用接口的多态特性来创建一系列的对象,而不是指定具体的类。 class AbstractProductA { public: virtual ~AbstractProductA() = default; virtual void eat() = 0; }; class AbstractPr 阅读全文
posted @ 2025-02-16 15:54 cwtxx 阅读(2) 评论(0) 推荐(0) 编辑
摘要:单例类的定义和使用 class Singleton { public: static shared_ptr<Singleton>& instancePtr() { static std::shared_ptr<Singleton> instance(new Singleton); return in 阅读全文
posted @ 2025-02-16 22:27 cwtxx 阅读(4) 评论(0) 推荐(0) 编辑
摘要:总览 设计模式原则: 开闭原则 对扩展开放,对修改关闭。 单一职责原则 一个类只负责一个功能领域中的相应职责。 里氏替换原则 所有使用基类的地方必须能透明地使用其子类对象。 依赖倒置原则 面向抽象编程,而不要面向具体对象编程。 接口隔离原则 类之间的依赖关系应该建立在最小的接口上。 迪米特法则 一个 阅读全文
posted @ 2025-02-16 21:52 cwtxx 阅读(5) 评论(0) 推荐(0) 编辑
摘要:依赖倒置原则——抽象(稳定)不应该依赖于实现细节(不稳定),实现细节要依赖于抽象 不妨假设一个场景来方便说明设计原则:我们准备开一家动物园,目前有老虎、狮子、熊猫等动物,然后对外开放展览,让这些动物出来活动活动。 那么,在不使用设计模式的情况下可能会写出这样的代码: class Tiger { pu 阅读全文
posted @ 2025-03-08 15:42 cwtxx 阅读(13) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示