设计模式
文章平均质量分 91
C++设计模式
布莱恩特退役写代码
Talk is cheap, show me the code!热爱生活,热爱coding!
展开
-
C++设计模式(17):组合模式
一、背景原创 2019-12-23 21:04:22 · 238 阅读 · 0 评论 -
C++设计模式(16):建造者模式
一、背景原创 2019-12-20 12:00:22 · 146 阅读 · 0 评论 -
C++设计模式(15):原型模式
一、背景原创 2019-12-19 21:39:51 · 132 阅读 · 0 评论 -
C++设计模式(14):享元模式
一、背景原创 2019-12-07 15:11:17 · 189 阅读 · 0 评论 -
C++设计模式(13):备忘录模式
一、背景原创 2019-12-07 10:26:30 · 120 阅读 · 0 评论 -
C++设计模式(12):中介者模式
一、背景原创 2019-12-05 16:42:10 · 227 阅读 · 0 评论 -
C++设计模式(11):责任链模式
一、背景原创 2019-12-03 21:18:39 · 700 阅读 · 0 评论 -
C++设计模式(10):装饰模式
一、背景在面向对象的开发中,如果想给一个类或者对象增加一个行为,首先想到的是类之间的继承,通过继承一个现有类,可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机,如果能够用组合的做法扩展对象的行为,就可以在运行时动态的进行扩展。二、模式定义装饰者模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,增加对象功能...原创 2019-12-02 20:36:49 · 200 阅读 · 0 评论 -
C++设计模式(9):外观模式
一、背景二、模式定义提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更加容易使用。引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。三、模式角色和UML类图四、模式总结使用场景优点缺点...原创 2019-11-22 11:52:49 · 165 阅读 · 0 评论 -
C++设计模式(8):适配器模式
一、背景在开发中,我们通常可以通过目标类提供的接口访问这个类提供的服务。有时候现有的类可以满足客户类的功能需求,但是他所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能。适配器提供客户类需要的接口,适配器的...原创 2019-11-20 17:11:25 · 106 阅读 · 0 评论 -
C++设计模式(7):观察者模式
一、背景二、模式定义三、模式角色和UML类图代码示例四、模式总结原创 2019-11-12 21:01:29 · 327 阅读 · 0 评论 -
C++设计模式(5):策略模式
一、背景在软件开发过程中,我们经常遇到实现一个功能可能需要多种不同的算法或者策略的情形,我们会根据上下文决定使用哪一种算法或者策略完成该功能。一般的做法是实现一个功能函数,通过入参结合if - else if - else来判断使用哪一种算法来完成该功能。试想,如果我们现在增加了一种实现该功能的算法,那么我们必须修改这个功能函数,为它加上对应的else if处理分支。二、策略模式定义策略模...原创 2019-11-09 11:09:32 · 215 阅读 · 0 评论 -
C++设计模式(4):模板方法模式
一、背景二、模板方法模式定义定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。模板方法模式是用来创建一个算法模板,什么是模板?其实就是一个方法。更加具体的来说就是这个方法将算法定义成一组固定顺序的步骤(方法),其中任何一种步骤都可以是抽象的,由子类...原创 2019-10-30 17:31:00 · 298 阅读 · 0 评论 -
C++设计模式(3):迭代器模式
一、背景有多种方法可以将对象堆起来成为一个集合,我们可以将它们放进数组、堆栈或者散列表中,每种方式都有各自的使用时机。但是当客户需要遍历访问这些对象的时候,最好不要让客户知道数据集合的内部实现。那么如何能让客户遍历你的对象而无又无法窥视的存储对象的方式,最常用的方式就是将对这些集合遍历的方式封装起来,不管什么形式的集合,都采用一种迭代访问的方式:迭代器模式。二、迭代器模式迭代器模式提供一种...原创 2019-10-25 10:32:09 · 297 阅读 · 0 评论 -
C++设计模式(2):状态模式(代码)
class GumballMachine;/* 抽象接口,在此接口内,糖果机的每个动作都有一个对应的方法 */class State{public: virtual void insertQuarter() = 0; /* 投入25分钱 */ virtual void ejectQuarter() = 0; /* 退回25分钱 */ virtual void turnCrank() ...原创 2019-10-19 12:00:02 · 215 阅读 · 0 评论 -
C++设计模式(2):状态模式
一、状态和有状态的对象一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的对象;这样的对象状态是从事先定义好的一系列值中取出来的,当一个这样的对象与外部事件产生互动,其内部状态就会改变,从而使得系统的行为与随之发生变化。二、状态模式状态模式:又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式;允许一个对...原创 2019-10-19 11:53:52 · 322 阅读 · 0 评论 -
C++设计模式(1):代理模式
一、模式定义代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问。通过代理对象访问目标对象,这样做的好处就是可以在目标对象实现的基础上,扩展目标对象的功能。代理模式分为静态代理和动态代理。二、模式作用控制和管理对目标对象的访问三、模式的角色和UML图抽象角色:声明真实对象和代理对象的共同接口代理角色:1.代理对象角色内部含有对真实对象的引用,从而可以操作真实对象2.代理对象提...原创 2019-10-16 13:50:58 · 345 阅读 · 0 评论