![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 85
Y_23k_bug
这个作者很懒,什么都没留下…
展开
-
c++设计模式—策略模式
策略模式(Strategy):策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 Strategy类,定义所有支持的算法的公共接口://抽象算法类class Strategy{ //算法函数public:virtual void AlgorithmInterface()=0;原创 2013-07-30 15:39:39 · 731 阅读 · 0 评论 -
C++设计模式-----状态模式
状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。当然,如果这个状态判断很简单,那么就没必要用‘状态模式’了。 状态模式结构图: 相关类的解原创 2013-10-03 19:13:39 · 1126 阅读 · 0 评论 -
C++设计模式---命令模式
命令模式(Command):将一个请求封装为一个对象,从而使你可以不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式结构图: Command类,用来声明执行操作的接口。 class Command{ protected: Receiver *receiver; public: Comman原创 2013-10-06 15:46:41 · 996 阅读 · 0 评论 -
C++设计模式----组合模式
组合模式(Composite):将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对象单个对象和组合对象的使用具有一致性。 组合模式结构图: 理解: 1. Component是组合对象的基类,定义了类的公共方法;提供一个访问和管理子组件的方法。管理子组件的方法:Add-添加子组件;Remove-移除子组件; 2. Lea原创 2013-10-04 20:25:54 · 1032 阅读 · 0 评论 -
C++设计模式----对象适配器模式
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 对于适配器模式有两种类型:类适配器模式和对象适配器模式类适配器模式:通过多重继承对一个接口和另一个接口进行匹配,只有c++适合 对象适配器模式 适配器模式结构图: Target类:这是客户所期待的接口。目标可以原创 2013-10-04 14:25:35 · 1135 阅读 · 0 评论 -
C++设计模式---中介者模式
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式(Mediator)结构图: Colleague叫做抽象同事类,而ConcreteColleague是具体同事类,每个具体同事只知道自己的行为,而不了解其他同事类的情况,但它们却都认识中介者对象,Mediator是抽象中介者原创 2013-10-06 19:45:22 · 1063 阅读 · 0 评论 -
C++设计模式-----建造者模式\生成器模式
问题: 如果我们想写一个建造人的类,我们可以这样写: class Person{ public: void BuildHead(); void BuildBody(); void BuildArmLetf(); void BuildArmRight(); void BuildLegLeft(); void Bu原创 2013-10-01 02:11:25 · 1446 阅读 · 0 评论 -
C++设计模式---观察者模式
观察者模式:观察者模式又叫分布-订阅模式观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 观察者模式(Observer)结构图: 结构图及观察者模式结构代码解释: Subject类:可翻译为主题或抽象通知者,一般用一个抽象类或者原创 2013-10-02 23:28:05 · 1042 阅读 · 0 评论 -
C++设计模式---桥接模式—合成/聚合复用原则
桥接模式:合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。 合成和聚合都是关联的特殊种类。聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的‘拥有’关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。 比如:大雁有两个翅膀,翅膀与大雁是部分和整体的关系,并且它们的生命周期是相同的,于是大雁和翅膀就是合原创 2013-10-05 16:47:14 · 1536 阅读 · 0 评论 -
C++设计模式---职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿这条链传递该请求,直到有一个对象处理它为止。 这里发出这个请求的客户端并不知道这当中的哪一个对象最终处理这个请求,这样系统的更改可以在不影响客户端的情况下动态地重新组织和分配责任。 职责链模式结构图: Handler类,定义一个处理请求的接口原创 2013-10-06 16:55:59 · 1013 阅读 · 0 评论 -
C++设计模式---备忘录模式
备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 备忘录模式结构图: Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内原创 2013-10-04 15:42:59 · 970 阅读 · 0 评论 -
C++ 设计模式—外观模式
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式(Facede)结构图: 四个子系统的类: class SubSystemOne{ public: void MethodOne() { cout }}; c原创 2013-09-30 22:03:35 · 944 阅读 · 0 评论 -
c++设计模式—模板方法模式
模板方法模式:模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。AbstractClass是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现,顶级逻辑也有可能调用一些原创 2013-08-02 10:49:21 · 1014 阅读 · 0 评论 -
c++设计模式—工厂方法模式
工厂方法模式:工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法一个类的实例化延迟到其子类。 简单工厂模式和工厂方法模式的区别: 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,出去了与具体产品的依赖。如果我们要去修改程序的时候,我原创 2013-08-01 20:54:11 · 832 阅读 · 0 评论 -
c++设计模式—代理模式
代理模式:代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。RealSubject类,定义Proxy所代表的真实实体。Proxy类,保存一个引用使用代理可以访问实体,并提供一个与Subject的接口相同原创 2013-08-01 17:55:08 · 924 阅读 · 0 评论 -
c++设计模式—装饰模式
装饰模式: 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就是增加功能,装饰模式比生成子类更为灵活。 Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继续了Component,从外类来扩展Co原创 2013-08-01 16:41:33 · 759 阅读 · 0 评论 -
c++设计模式—简单工厂模式
C++ 简单工厂模式: 例如用面向对象的方法写一个计算器的控制台程序。一般我们会先写个运算类作为基类,该类中有个getResult的虚函数。然后再写相应的子类(加、减、乘、除)并多态的实现getResult函数。在main函数中,当我们选择了那种运算符就初始化一个运算类的对象。 “简单工厂模式”,就是说,到底要实例化谁,将来会不会增加实例化对象,应该考虑一个单独的类来做这个原创 2013-07-30 15:34:00 · 809 阅读 · 0 评论 -
C++设计模式---迭代器模式
迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 迭代器模式结构图: typedef String object;Iterator迭代器抽象类: class Iterator{ public: virtual object& First()=0; virtual原创 2013-10-05 01:07:04 · 1337 阅读 · 0 评论