面向对象程序设计模式
文章平均质量分 63
zzyczzyc
越努力越幸运
展开
-
面向对象设计-三大特性、七项原则
三大特性封装:对具有相同属性的事物进行统一描述继承:一个类获取另外一个类的属性的方式多态:一个类实例的相同方法在不同情形有不同表现形式,说白了就是父类指针指向子类对象七项原则:目的就是实现 高内聚、低耦合单一职责原则(Single Responsibility Principle,SRP):类的职责单一,对外只提供一种功能,而引起类变化的原因都应该只有一个开闭原则(O...原创 2018-10-13 20:04:27 · 394 阅读 · 0 评论 -
行为型模式-观察者模式
观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式UML图:例子观察者:学生,他们正在观察目标(班长),老师没来,学生都在干坏事老师一来,班长给学生暗号,学生更新状态:都去写作业;抽象观察者,及具体观察者class AbstractObserver{public: virtual void...原创 2018-10-20 16:01:42 · 154 阅读 · 0 评论 -
结构型模式-代理模式
代理模式为其他对象提供一种代理,以控制对这个对象的访问代理模式的UML图:说明:用户想要购买国外产品需要通过代购,代购在购买(Buy方法)过程中可以进行其他操作,加点小费、帮你验证产品真假,是真的才帮你购买等等。物品class Item{public: Item(string kind, bool type) { m_kind = kind; m_type = ...原创 2018-10-17 20:17:03 · 116 阅读 · 0 评论 -
行为型模式-命令模式
命令模式将一个请求封装成一个对象,请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 UML图:例子说明:在路边大排档,客人有需要考串,烤鸡腿等命令。客人将命令传给服务员,服务员再将命令交给厨师。厨师类:能够执行:烤串、烤鸡腿命令class Cooker{public: void MakeSh...原创 2018-10-19 22:02:12 · 155 阅读 · 0 评论 -
行为型模式-策略模式
策略模式一个类的行为或其算法可以在运行时更改UML类图:例子:促销策略class SaleStrategy{public: virtual void SaleWay() = 0;};class StrategyA :public SaleStrategy{public: virtual void SaleWay() { cout <&...原创 2018-10-19 09:55:44 · 116 阅读 · 0 评论 -
行为型模式-模板模式
模板模式一个抽象类定义了一系列基本操作(可以具体,也可以抽象),其子类可以根据自身情况具体实现父类的抽象方法,完成相似的功能。 UML图:例子:抽象模板类:一样的步骤就不用写成抽象类,烧开水、倒入杯中,都是一样的class Beverage{public: void BoilWater() //步骤1 { cout << "烧开水&原创 2018-10-19 09:04:07 · 141 阅读 · 0 评论 -
创建型模式-单例模式
单例模式概念三个要点(1) 某个类只有一个实例对象(2)它必须自行创建实例(3)它必须自行向整个系统提供实例实现步骤(1) 构造函数私有化(保证外部不能进行实例化)(2)提供一个全局的静态方法,来获取单例对象(3)类中定义一个静态指针,指向本类懒汉式class SingleObject{private: SingleObject() //私有化构造函...原创 2018-10-15 17:16:25 · 104 阅读 · 0 评论 -
结构型模式-适配器模式
适配器模式将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。例子15v电压抽象类class V5{public: virtual void useV5() = 0; };//目前只有v220的类 没有v5class V220{public: void useV220() { cout << "使...原创 2018-10-18 17:52:51 · 110 阅读 · 0 评论 -
结构型模式-外观模式
外观模式根据迪米特法则,两个类不需要直接通信,那么久不应该发生相互作用。facade模式也叫外观模式,是一组为 具有类似功能的类群,比如子系统、类库等等,提供一种简单的界面。这简单的界面也称作facade。外观模式的UML图:例子实现家庭影院的外观模式(1)实现KTV模式:电视打开、灯关掉、音响打开、麦克风打开(2)实现游戏模式:电视打开、音响打开、游戏机打开各...原创 2018-10-18 15:41:46 · 132 阅读 · 0 评论 -
创建型模式-抽象工厂
抽象工厂 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就是我们本文将要学习的抽象工厂模式的基本思想。 比如有一系列产品:鼠标、键盘、耳机。每个厂商都能生产:惠普,联想,戴尔。惠...原创 2018-10-15 10:35:26 · 132 阅读 · 0 评论 -
创建型模式-工厂模式
简单工厂模式又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂UML类图:水果抽象类class Fruit{public: virtual void GetName()=0;}具体水果实现:class Apple : public Fruit...原创 2018-10-14 15:39:45 · 191 阅读 · 0 评论 -
结构型模式-装饰模式
装饰模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活装饰模式的UML图:例子抽象构件类、具体构件类class Phone{public: virtual void Show() = 0;};class Iphone :public Phone{public: Iphone(string type) { m...原创 2018-10-20 17:26:22 · 143 阅读 · 0 评论