摘要:
参数化的声明 C++支持四种基本模板:类模板、函数模板、变量模板和别名模板,每一种都可以出现在命名空间的作用域中和类作用域中。 template<typename T> // 类模板的命名空间 class Data { public: static constexpr bool copyable = 阅读全文
posted @ 2025-02-16 21:50
cwtxx
阅读(21)
评论(0)
推荐(0)
摘要:
使用特征 特征是一种机制,用于提供模板所需的必要信息,比如模板中变量的类型,初始值等等。简单的理解,特征是有关模板参数的额外属性,具体指的可以是与该模板相关的其他模板类中的字段或是常量等。在编译阶段就可以从这个额外属性中获取到一些模板实例中会用到的信息。 template<typename T> s 阅读全文
posted @ 2025-02-16 21:29
cwtxx
阅读(22)
评论(0)
推荐(0)
摘要:
意图 定义一系列的算法,把它们一个个地封装起来,并让它们可以互相替换。这样使得算法可以随时替换和变更,典型的比如超市的降价策略,同样的商品可能每天有不同的折扣。 示例 class DiscountStrategy { public: virtual void discount() = 0; }; c 阅读全文
posted @ 2025-02-16 15:54
cwtxx
阅读(6)
评论(0)
推荐(0)
摘要:
抽象工厂 使用接口的多态特性来创建一系列的对象,而不是指定具体的类。 class AbstractProductA { public: virtual ~AbstractProductA() = default; virtual void eat() = 0; }; class AbstractPr 阅读全文
posted @ 2025-02-16 15:54
cwtxx
阅读(10)
评论(0)
推荐(0)
摘要:
动机 观察者模式意图建立一种对象间一对多的关系,当一个对象中的状态发生改变时,所有依赖它的对象都会收到通知并自动同步更新。 示例 试想这样一种场景,有一组数据,可以通过不同的图表的方式被展示,比如柱状图、折线图、饼状图等等。虽然展示的方式不同,但数据应该是同样的一组,假设这组数据有一个数据对象关系, 阅读全文
posted @ 2025-02-16 15:46
cwtxx
阅读(13)
评论(0)
推荐(0)
摘要:
设计 职责链是行为型设计模式中的一种,关注的是请求发送对象和请求接收对象间的关系,目的是使一个请求被发出后,多个有关联的对象都可能有机会处理这个请求,避免了请求发送者和接收者间的耦合关系。让所有接收者连成一条链,然后请求在这条链上进行传播,直至有对象处理为止,而这些对象可以被动态地绑定。 示例代码 阅读全文
posted @ 2025-02-16 15:42
cwtxx
阅读(8)
评论(0)
推荐(0)
摘要:
动机 在面向对象的设计中,鼓励将行为封装到各自的对象中,这就会导致如果一个动作涉及多个类对象之间的互动时,往往导致类与类之间的关系错综复杂。显然,这不利于后续的维护和扩展。 中介者类似于“加一层”的思想,将涉及多个类对象之间的动作封装到中介者类中,由中介者进行协调控制,而其他的类对象只需要知道中介者 阅读全文
posted @ 2025-02-16 15:42
cwtxx
阅读(9)
评论(0)
推荐(0)
摘要:
意图 当一个对象的内部状态改变时,改变其行为。 适用于对象的行为由它的状态决定时,或是一个方法中有多个分支,这些分支都依赖于对象的状态。 示例 class ServerState { public: virtual void connect() = 0; }; class Established : 阅读全文
posted @ 2025-02-16 15:40
cwtxx
阅读(10)
评论(0)
推荐(0)

浙公网安备 33010602011771号