摘要: trait与policy模板应用简单示例 accumtraits.hpp // 累加算法模板的trait policies.hpp // 累加算法模板的policy accum.hpp // 累加算法模板:实现为类模板,用模板参数来传递policy和trait mytest.cpp // 使用累加算 阅读全文
posted @ 2017-11-04 23:23 lsgxeva 阅读(626) 评论(0) 推荐(0)
摘要: 理解typename的两个含义 问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同? template<class T> class Widget; // uses "class" template<typename T> clas 阅读全文
posted @ 2017-11-04 23:07 lsgxeva 阅读(618) 评论(0) 推荐(0)
摘要: 行为型模型 空对象模式 空对象模式 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执 阅读全文
posted @ 2017-11-04 17:26 lsgxeva 阅读(243) 评论(0) 推荐(0)
摘要: 行为型模型 迭代器模式 GOOD:提供一种方法顺序访问一个聚敛对象的各个元素,而又不暴露该对象的内部表示。 为遍历不同的聚集结构提供如开始,下一个,是否结束,当前一项等统一接口。 Iterator(迭代器接口): 该接口必须定义实现迭代功能的最小定义方法集 比如提供hasNext()和next()方 阅读全文
posted @ 2017-11-04 17:07 lsgxeva 阅读(356) 评论(0) 推荐(0)
摘要: 行为型模型 解释模型 阅读全文
posted @ 2017-11-04 16:41 lsgxeva 阅读(455) 评论(0) 推荐(0)
摘要: 行为型模型 状态模式 Context:用户对象 拥有一个State类型的成员,以标识对象的当前状态; State:接口或基类 封装与Context的特定状态相关的行为; ConcreteState:接口实现类或子类 实现了一个与Context某个状态相关的行为。 适用于: 对象的行为,依赖于它所处的 阅读全文
posted @ 2017-11-04 16:24 lsgxeva 阅读(391) 评论(0) 推荐(0)
摘要: 行为型模型 访问者模式 抽象访问者(Visitor)角色: 声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。 具体访问者(ConcreteVisitor)角色: 实现抽象访问者角色所声明的接口,也就是抽象访问者所声明的各个访问操作。 抽象节点(Element)角色: 声明一个接受操 阅读全文
posted @ 2017-11-04 14:35 lsgxeva 阅读(440) 评论(0) 推荐(0)
摘要: 行为型模型 备忘录模式 应用场景 如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。 1)一个类需要保存它的对象的状态(相当于Originator角色) 2)设计一个类,该类只是用来保存上述对象的状态(相当于Memento角色) 3)需要 阅读全文
posted @ 2017-11-04 13:53 lsgxeva 阅读(384) 评论(0) 推荐(0)
摘要: 行为型模型 观察者模式 Subject(被观察者) 被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。 ConcreteSubject 被观察者的具体实现。包含一些基本的属性状态及其他操作。 Observer 阅读全文
posted @ 2017-11-04 13:24 lsgxeva 阅读(318) 评论(0) 推荐(0)
摘要: 行为型模型 中介者模式 Mediator抽象中介者 中介者类的抽象父类。 concreteMediator 具体的中介者类。 Colleague 关联类的抽象父类。 concreteColleague 具体的关联类。 适用于: 用一个中介对象,封装一些列对象(同事)的交换,中介者是各个对象不需要显示 阅读全文
posted @ 2017-11-04 13:03 lsgxeva 阅读(453) 评论(0) 推荐(0)
摘要: 行为型模型 策略模式 Strategy: 策略(算法)抽象。 ConcreteStrategy 各种策略(算法)的具体实现。 Context 策略的外部封装类,或者说策略的容器类。根据不同策略执行不同的行为。策略由外部环境决定。 好处: //算法的实现 和 客户端的使用 解耦合 //使得算法变化,不 阅读全文
posted @ 2017-11-04 11:54 lsgxeva 阅读(443) 评论(0) 推荐(0)
摘要: 行为型模型 责任链模式 Handler 处理类的抽象父类。 concreteHandler 具体的处理类。 责任链优缺点 优点: 1。责任的分担。每个类只需要处理自己该处理的工作(不该处理的传递给下一个对象完成),明确各类的责任范围,符合类的最小封装原则。 2。可以根据需要自由组合工作流程。如工作流 阅读全文
posted @ 2017-11-04 11:40 lsgxeva 阅读(449) 评论(0) 推荐(0)
摘要: 行为型模型 命令模式 Command Command命令的抽象类。 ConcreteCommand Command的具体实现类。 Receiver 需要被调用的目标对象。 Invorker 通过Invorker执行Command对象。 适用于: 是将一个请求封装为一个对象,从而使你可用不同的请求对客 阅读全文
posted @ 2017-11-04 11:25 lsgxeva 阅读(579) 评论(0) 推荐(0)
摘要: 行为型模型 模版模式 应用场景 Template Method模式一般应用在具有以下条件 的应用中: - 具有统一的操作步骤或操作过程 - 具有不同的操作细节 - 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同总结: 在抽象类中统一操作步骤,并规定好接口;让子类实现接口。这样可以 阅读全文
posted @ 2017-11-04 10:51 lsgxeva 阅读(718) 评论(0) 推荐(0)