装饰模式testing0927.cpp
来源:互联网 发布:java怎么学 编辑:程序博客网 时间:2024/06/05 14:40
// 装饰模式testing0927.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
class Base
{
public:
virtual void show()=0;
};
class Decoratee:public Base
{
public:
virtual void show(){cout<<"it is time that:\n";};
};
class Decorator:public Base
{
private:
Base* ptrbase;
public:
Decorator(){ ptrbase=0; }
Decorator(Base* base)
{
ptrbase=base;
}
virtual void show()
{
ptrbase->show();
}
};
class HourDeco:public Decorator
{
private:
Base* _base;
public:
HourDeco(Base* base)
:_base(base)
{cout<<" ";};
virtual void show()
{
_base->show();
cout<<"Hour:999\n";
}
};
class MinuteDeco:public Decorator
{
private:
Base* _base;
public:
MinuteDeco(Base* base)
:_base(base)
{cout<<" ";};
virtual void show()
{
_base->show();
cout<<"Minute:888\n";
}
};
class SecondDeco:public Decorator
{
private:
Base* _base;
public:
SecondDeco(Base* base)
:_base(base)
{cout<<" ";};
virtual void show()
{
_base->show();
cout<<"Sec:777\n";
}
};
int main()
{
Decoratee decoratee;
Base* ptrBase=&decoratee;
HourDeco hourDeco(ptrBase);
ptrBase=&hourDeco;
MinuteDeco minuteDeco(ptrBase);
ptrBase=&minuteDeco;
SecondDeco secondDeco(ptrBase);
ptrBase=&secondDeco;
ptrBase->show();
return 0;
}
//
#include "stdafx.h"
#include<iostream>
using namespace std;
class Base
{
public:
virtual void show()=0;
};
class Decoratee:public Base
{
public:
virtual void show(){cout<<"it is time that:\n";};
};
class Decorator:public Base
{
private:
Base* ptrbase;
public:
Decorator(){ ptrbase=0; }
Decorator(Base* base)
{
ptrbase=base;
}
virtual void show()
{
ptrbase->show();
}
};
class HourDeco:public Decorator
{
private:
Base* _base;
public:
HourDeco(Base* base)
:_base(base)
{cout<<" ";};
virtual void show()
{
_base->show();
cout<<"Hour:999\n";
}
};
class MinuteDeco:public Decorator
{
private:
Base* _base;
public:
MinuteDeco(Base* base)
:_base(base)
{cout<<" ";};
virtual void show()
{
_base->show();
cout<<"Minute:888\n";
}
};
class SecondDeco:public Decorator
{
private:
Base* _base;
public:
SecondDeco(Base* base)
:_base(base)
{cout<<" ";};
virtual void show()
{
_base->show();
cout<<"Sec:777\n";
}
};
int main()
{
Decoratee decoratee;
Base* ptrBase=&decoratee;
HourDeco hourDeco(ptrBase);
ptrBase=&hourDeco;
MinuteDeco minuteDeco(ptrBase);
ptrBase=&minuteDeco;
SecondDeco secondDeco(ptrBase);
ptrBase=&secondDeco;
ptrBase->show();
return 0;
}
- 装饰模式testing0927.cpp
- 工厂模式testing0927.cpp
- 装饰模式-撤销装饰
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 如何使用免费敏捷工具放飞你的创造力?
- 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用27
- 策略模式testing1002.cpp
- 工厂模式testing0927.cpp
- linux下学习OpenGL
- 装饰模式testing0927.cpp
- iPhone_开发_基本术语_Serialization
- 结构之法 算法之道 博客地址 --- 对各种面试题的收集整理
- Android中Activity的生命周期
- 乔布斯时代结束
- VIM for windows + ctags + taglist + winmanager
- struts constant
- Synchronize access to shared mutable data
- Java语言实现的各种排序源代码--快速排序