`
东边日出西边雨
  • 浏览: 257938 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

装饰器模式Decorator(c++)

阅读更多

 



 

相应的代码:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

// base class
class Beverage
{
public:
	virtual string getDescription() = 0;
	virtual float cost() = 0;
};

// base class of condiment, also a base decorator class
class CondimentDecorator : public Beverage
{
protected:
	Beverage *m_coffee;
};

// coffee DarkRoast
class DarkRoast: public Beverage
{
public:
	string getDescription() {
		return "Darkroast";
	}
	float cost() {
		return 5.0;
	}
};

// coffee Espresso
class Espresso:  public Beverage
{
public:
	string getDescription() {
		return "Espresso";
	}
	float cost() {
		return 6.5;
	}
};

// condiment milk
class Milk:  public CondimentDecorator
{
public:
	Milk() {}
	Milk(Beverage *coffee) {
		m_coffee = coffee;
	}
	string getDescription() {
		return m_coffee->getDescription() + ", Milk";
	}
	float cost() {
		return m_coffee->cost() + 1.0;
	}
};

// condiment mocha
class Mocha:  public CondimentDecorator
{
public:
	Mocha() {}
	Mocha(Beverage *coffee) {
		m_coffee = coffee;
	}
	string getDescription() {
		return m_coffee->getDescription() + ", Mocha";
	}
	float cost() {
		return m_coffee->cost() + 0.5;
	}
};

int main()
{
	Beverage *coffee = new Espresso;
	coffee = new Milk(coffee);
	coffee = new Mocha(coffee);
	cout<<coffee->getDescription()<<" $"<<coffee->cost();
	getchar();
	return 0;
}

 

打印出:

 

Esprosso, Milk, Mocha &8

 

  • 大小: 46.1 KB
分享到:
评论

相关推荐

    装饰器(Decorator)模式

    装饰器(Decorator)模式 详细教程,简明易懂,非常清晰的,附带有代码示例。

    c++设计模式-结构型模式-装饰器模式

    c++设计模式-结构型模式-装饰器模式;QT工程;c++简单源码; 装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。

    C++设计模式(Design Pattern)范例源代码

    装饰者模式(Decorator) 外观模式(Facade) 蝇量模式(Flyweight) 代理模式(Proxy) 行为型: 责任链模式(Chain of Responsibility) 命令模式(Command) 解释器模式(Interpreter) 迭代器模式(Iterator) 中介者模式...

    设计模式--C++

    4.4 Decorator(装饰)—对象结构型模式 115 4.5 FACADE(外观)—对象结构型模式 121 4.6 Flyweight(享元)—对象结构型模式 128 4.7 Proxy(代理)—对象结构型模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter ...

    分析Python中设计模式之Decorator装饰器模式的要点

    先给出一个四人团对Decorator mode的定义:动态地给一个对象添加一些额外的职责。 再来说说这个模式的好处:认证,权限检查,记...Python提供的语法就是装饰器语法(decorator),如下: @aoo def foo(): pass def ao

    GOLF设计模式(C++语言版)

    4.4 Decorator(装饰)—对象结构型 模式 115 4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 ...

    Python装饰器模式定义与用法分析

    本文实例讲述了Python装饰器模式定义与用法。分享给大家供大家参考,具体如下: 装饰器模式定义:动态地给一个对象添加一些额外的职责。 在Python中Decorator mode可以按照像其它编程语言如C++, Java等的样子来实现...

    设计模式,软件开发者必读

    3.4 DECORATOR 装饰模式 43 3.5 FACADE 外观模式 46 3.6 FLYWEIGHT 享元模式 49 3.7 PROXY 代理模式 53 行为模式 57 4.1 CHAIN OF RESPONSIBILITY 职责链模式 57 4.2 COMMAND 命令模式 61 4.3 INTERPRETER 解释器...

    设计模式可复用面向对象软件的基础.

    4.4 Decorator(装饰)—对象结构型 模式 115 4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 ...

    二十三种设计模式【PDF版】

    设计模式之 Decorator(装饰器) Decorator 是个油漆工,给你的东东的外表刷上美丽的颜色. 设计模式之 Bridge(桥连) 将牛郎织女分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合) 设计模式...

    Head.First设计模式_PDF.part1

    第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton、Command、Adapter、Facade、Templat Method、Iterator、Composite、State、Proxy。最后三章比较...

    asp.net知识库

    C++ 泛型编程系列讲座之实施 泛型技巧系列:简单类型选择器 C# 泛型简介 我眼中的C#2.0新功能特性 泛型技巧系列:避免基类及接口约束 New Article 不该用Generics实现Abstract Factory的理由 C#2.0-泛型 C#2.0-...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    LexI:Lexi在C ++中的教育实现

    注意:由于特定于实现,滚动器目前不是GoF中描述的装饰器。 在第2.4节中描述。 在2.5节中描述。 桥:,接口及其子 。 在第2.6节中描述。 在2.7节中描述。 注意:某些模式是WIP状态,可能与GoF中提供的实现有所...

Global site tag (gtag.js) - Google Analytics