zoukankan      html  css  js  c++  java
  • 设计模式之装饰模式(Decorator)

    装饰模式原理:给对象增加特性,这种特性是一种累加的效果

    代码如下

    #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;
    }
    
  • 相关阅读:
    Java面试不得不知的程序(二)
    Java面试不得不知的问题(一)
    Java框架 面试题总结
    JavaSE 面试题总结
    JavaEE 面试题总结
    DBUtils 学习使用
    JavaWeb —— JSP 总结
    java 单例模式(singleton)
    java 上溯造型与下塑造型
    java 第六章 面向对象基础
  • 原文地址:https://www.cnblogs.com/liuweilinlin/p/3204590.html
Copyright © 2011-2022 走看看