您的位置:首页 > 其它

设计模式之装饰模式(Decorator)

2013-07-22 02:01 246 查看
装饰模式原理:给对象增加特性,这种特性是一种累加的效果

代码如下

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

/************************************************************************/
/* 装饰模式的作用是为对象增加属性										*/
/************************************************************************/
class Phone
{
public:
Phone(string name):m_name(name)
{

}
Phone()
{

}
virtual void show(){}
protected:
string m_name;
};

class IPhone:public Phone
{
public:
IPhone(string name):Phone(name)
{

}
virtual void show(){cout << m_name << "的装饰" <<endl;}
};
class HTCPhone:public Phone
{
public:
HTCPhone(string name):Phone(name)
{

}
virtual void show(){cout << m_name << "的装饰" <<endl;}
};

class DecoratorPhone:public Phone
{
public:
DecoratorPhone(Phone *pPhone)
{
m_pPhone = pPhone;
}
virtual void show()
{
m_pPhone->show();
}
protected:
Phone *m_pPhone;
};
class DecoratorPhoneA:public DecoratorPhone
{
public:
DecoratorPhoneA(Phone *pPhone):
DecoratorPhone(pPhone)
{

}
virtual void show()
{
DecoratorPhone::show();
cout << "挂饰" <<endl;
}
};
class DecoratorPhoneB:public DecoratorPhone
{
public:
DecoratorPhoneB(Phone *pPhone):DecoratorPhone(pPhone){}
virtual void show()
{
DecoratorPhone::show();
cout << "贴膜" <<endl;
}
};

int main()
{
Phone *iphone = new IPhone("iphone4s");
Phone *dpa = new DecoratorPhoneA(iphone);
Phone *dpb = new DecoratorPhoneB(dpa);
dpb->show();

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: