设计模式(C++)
coffee-123
这个作者很懒,什么都没留下…
展开
-
(一)简单工厂模式
实例化对象的时候不再使用 new Object()形式,可以根据用户的选择条件来实例化相关的类。对于客户端来说,去除了具体的类的依赖。只需要给出具体实例的描述给工厂,工厂就会自动返回具体的实例对象。 场景:采用简单工厂模式设计一款运算器可以自由添加运算规则 #include<iostream> #include<string> #include<vector...原创 2019-09-01 10:04:58 · 122 阅读 · 0 评论 -
(二)策略模式
简单工厂模式只是解决对象的创建问题,而且由于工厂本身包括了所有的收费方式,商场可能经常性的更改打折额度和返利额度,每次维护或者扩展收费方式都要改动这个工厂,以致代码需要重新编译部署,这不是一种好方法。而且为了创建不同的对象产品使用了switch case(或if else)的形式实现代码,这样违背了开闭原则,即对扩展开放、对修改封闭,维护的成本会随着cese(或else)的增加而增加,而本文的策略...原创 2019-09-05 23:19:41 · 206 阅读 · 0 评论 -
(三)装饰者模式
一,概念 装饰器模式是一种属于结构型的设计模式,它通过一层一层地包装类方式来为类增加新的方法,本质是利用组合,同时也利用了继承。与单纯的继承相比,它更加灵活,因为装饰类之间可以动态地自由组合来添加功能。 给对象添加方法的方式有多种,通常,当说到给对象添加方法时,最直接的就是直接在该对象的类中增加新的方法,但这样在最上方增加方法,不仅更改了原来的代码结构,还会让代码看起来十分臃肿;然后,我们就...原创 2019-09-23 22:28:34 · 129 阅读 · 0 评论 -
(四)工厂方法
工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响; 违背“开放 - 关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,那样就需要工厂类中做判断(比如:if),根据不同的条件或者前提创建不同的对象。这也就造成了,当增加新的产品时,需要修改工厂类,也就是其增加其判断分支。 简单工厂模式由于使用了静态工厂方法,静态方法不能被继承和重写,会造成工厂角色无法形成基...原创 2019-09-24 23:25:43 · 152 阅读 · 0 评论 -
(五)观察者模式
观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监视某一个主题对象。这个主题对象的状态变化时,会通知所有的观察者对象,使他们能够自动更新自己的状态。 举个例子:观察者模式可以理解为, 在一个一对多的关系模式中, 例如一个微信公众号有多个关注用户,那么关注该微信公众号的微信用户就是观察者,微信公众号就...原创 2019-09-25 20:14:36 · 169 阅读 · 0 评论 -
(六)单例模式
单例模式的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 实现单例模式的思路是: 一个类只有一个实例对象。在C++中一般是将构造函数、拷贝构造函数以及赋值操作符函数声明为private级别,从而阻止用户实例化一个类。那么,如何才能获得该类的对象呢?需要类提供一个 p...原创 2019-09-25 22:24:23 · 89 阅读 · 0 评论