设计模式
Dream_Debugging
GNSSER
展开
-
《Head First 设计模式》-观察者模式C++实现
书中是让设计一个气象观测值,持续进行观测。有相应的布告板(显示器)显示不同的气象信息,并且气象站数据更新时,布告板进行相应的信息更新。所谓的观察者模式就是定义了对象之间的一对多关系,当一个对象改变时,他的所有依赖者都会受到通知并自动更新,在本文中以对应一个主题,即气象站,多个对象就作为观察者即为多个布告板。 observer.h定义了两个基类做为主题subject和观察者obs原创 2017-01-13 12:23:29 · 398 阅读 · 0 评论 -
《Head First-设计模式》--装饰者模式C++实现
问题需求:完成某咖啡店的订单系统,不同的咖啡(综合、深焙、低咖啡因,浓缩)有不同的价格,不同的调料(牛奶、摩卡、豆浆、奶泡)也有不同的价格。根据所加入的调料收取不同的费用。显然不能用咖啡和调料组合的方法进行穷举订单类型,因为订单类型太多,而且以后还会有新的咖啡出现,也不利于维护和扩展。装饰者模式:动态地将责任附加到对象上,若要扩展,装饰者提供了比继承更优弹性的替代方案。设计思路原创 2017-01-14 15:15:20 · 492 阅读 · 2 评论 -
《Head First设计模式》-策略模式C++实现
用C++实现了书中的设计鸭子飞行的例子。鸭子类设计#ifndef DUCK_H_#define DUCK_H_#include#include"Fly.h"#include"Quack.h"using namespace std;class Duck{public: Duck(){ } void display(); void performFly(){ fl原创 2017-01-11 18:33:59 · 640 阅读 · 0 评论 -
《Head First设计模式》-工厂模式C++实现
问题需求:一个披萨店有多种披萨(奶油,蛤蜊等),同一种披萨在不同的分店(纽约、芝加哥等)有不同的做法。为了将披萨店类和披萨类型解耦(增加可扩展性,比如增加新 的 披萨类型,或开分店等),将实例化披萨的方法进行封装,该方法可以成为工厂,以此来处理对象的创建,然后客户程序(披萨店抽象类)就可以根据披萨类型进行制作披萨。工厂模式通过让子类决定该创建的对象是什么,来达到将对象创建的过程进行封装的目原创 2017-01-15 15:14:33 · 408 阅读 · 0 评论 -
《Head First 设计模式》-抽象工厂模式C++实现
问题需求与工厂模式一样,用到了抽象工厂模式----提供一个接口,用于创建相关或依赖对象的家族,而不需要制定具体的类。允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际产出的具体产品是什么。实现客户和具体产品的解耦。即是披萨店和具体的披萨工厂解耦,用一个抽象类原料工厂实现产品的实例化。抽象原料工厂类/******************************//*原料工厂原创 2017-01-17 10:40:51 · 856 阅读 · 0 评论