本文主要讲解“如何实现Phone类”。本文的解释简单明了,易学易懂。请跟随边肖的思路一起学习和学习“如何实现手机课堂”!
装饰模式从类中移除了装饰函数,从而简化了原始类。创建一个新的类来处理这些装饰功能。
装饰模式:动态地给对象添加一些额外的职责。在添加函数方面,装饰模式比生成子类更灵活。有时我们想给一个对象而不是整个类添加一些函数。比如有一款手机,可以让你给手机添加功能,比如添加挂件、屏幕贴纸等等。一种灵活的设计方法是将手机嵌入到另一个对象中,这个对象可以添加功能。我们称之为嵌入式物体装饰。这种装饰与它所装饰的组件接口是一致的,因此对于使用组件的客户来说是透明的。装饰器模式的UML图如下。
在这种设计中,手机的装饰功能是独立的,可以独立开发,从而简化了特定手机的设计。电话类的实现如下所示:
//公共抽象类
课堂电话
{
公众号:
Phone(){}
虚拟~电话(){}
virtualvoitshowDetail(){ }
};特定手机类别的定义。
//特定手机类别
classiPhone:publicPhone公共电话
{
私人:
stringm _ name//手机名称
公众号:
iPhone(string name):m _ name(name){ }
~iPhone(){}
装饰结束;of void show definition(){ coutm _ name ' }
};
//特定手机类别
类别诺基亚电话:公共电话
{
私人:
stringm _ name
公众号:
诺基亚手机(stringname):m_name(name){}
~诺基亚手机(){}
装饰结束;of void show definition(){ coutm _ name ' }
};装修班的实施:
/装饰类别
类别装饰电话:公共电话
{
私人:
Phone * m _ phone//待装修手机
公众号:
装饰手机(电话*电话):m_phone(电话){}
virtualvoidShowDecorate装修(){ m _ phone-show装修();}
};
//具体装修类别
class decoratororphone a : public decoratororphone
{
公众号:
装饰电话(电话*电话):装饰电话(电话){}
空隙显示装饰(){装饰字体:3360如何装饰();addDePartment();}
私人:
void department(){ cout ' Add pendant ' endl;}//增加了装饰
};
//具体装修类别
class decoratororphone b : public decoratororphone
{
公众号:
装饰手机b(电话*电话):装饰手机(电话){}
空隙显示装饰(){装饰字体:3360如何装饰();addDePartment();}
私人:
void department(){ cout ' screen paste ' endl;}//增加了装饰
};客户使用情况:
intmain()
{
phone * phone=new nokiaaphone(' 6300 ');
Phone*dpa=newDecoratorPhoneA(电话);//装饰,增加挂件
Phone*dpb=newDecoratorPhoneB(电话);//装饰,屏幕粘贴
dpb-show装修();
deletedpa
deletedpb
deleteiphone
返回0;
} decorator pattern动态地向现有函数添加一些函数。当系统需要新功能时。向旧代码添加不重要的新函数违反了开放封闭原则。我们经常使用一个新的类来处理新函数的添加。新类包含要修饰的对象。有效区分班级的核心责任和装饰功能。
感谢阅读。以上就是《如何实施电话课堂》的内容。学习完这篇文章,相信你对Phone类如何实现有了更深的理解,具体用法还需要实践验证。在这里,边肖将为您推送更多关于知识点的文章,敬请关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/137951.html