zoukankan      html  css  js  c++  java
  • 13.6.2 新添加一种技术(Adding One Technologry) 简单

    #include "createsony.h"
    #include "sony.h"
    enum Technology{PUREFLAT,PLASMA,LIQUIDCRYSTAL,NANOMETER};
    void fn(Sony* s)
    {
    	Sony2 * ps2 = dynamic_cast<Sony2*>(s); //增加
    	if(ps2) ps2->adjustLight(); //否则不用
    	ps2->adjustVolume();
    	ps2->switchChannel();
    }
    
    void createSonyObject(CreateSony* sp)
    {
    	Sony* s29 = createSonyInch29(sp);
    	fn(s29);
    	delete s29;
    }
    
    #include <iostream>
    using namespace std;
    int main()
    {
    	if(CreateSony* sp = createCreateSony(NANOMETER)){
    	    createSonyObject(sp);
    		delete(sp);
    	}
    	system("pause");
    	return 0;
    }
    

      

    #ifndef HEADER_NANOMETER
    #define HEADER_NANOMETER
    #include <iostream>
    
    class Nanometer
    {
    public:
    	virtual void drawgraph(){ std::cout<<"Nanometer\n";}
    	virtual void specialForNanometer(){ std::cout<<"SpecialForNanometer\n";}
    	~Nanometer(){}
    };
    #endif;
    

      

    #ifndef HEADER_NANOMETERCREATE
    #define HEADER_NANOMETERCREATE
    #include "createsony.h"
    
    class NanometerCreate : public CreateSony
    {
    	Sony* createInch29(); //创建C29对象
    	Sony* createInch34(); //创建C34对象
    	~NanometerCreate(){}
    };
    #endif;
    
    
    #include "nanometercreate.h"
    #include "d29.h"
    #include "d34.h"
    Sony* NanometerCreate::createInch29()
    {
        return new D29();
    }
    
    Sony* NanometerCreate::createInch34()
    {
        return new D34();
    }
    
    CreateSony* createNanmeter(){ return new NanometerCreate(); }
    

      

    #ifndef HEADER_D29
    #define HEADER_D29
    #include "inch29.h"
    #include "nanometer.h"
    #include <iostream>
    class D29 : public Inch29, protected Nanometer
    {
    public:
    	void adjustVolume(){ std::cout<<"纳米技术_液晶电视29英寸 Pureflat29 AdjustVolume\n"; }
    	void switchChannel(){ std::cout<<"纳米技术_液晶电视29英寸 Pureflat29 SwitchChannel\n";}
    	//void adjustLight(){ std::cout<<"液晶电视29英寸_新添加调整亮度功能";}
    	void adjustLight(){ std::cout<<"纳米技术_调节音量_液晶电视29英寸\n";}
    	~D29(){}
    };
    #endif;
    
    
    #ifndef HEADER_D34
    #define HEADER_D34
    #include "inch34.h"
    #include "nanometer.h"
    #include <iostream>
    class D34 : public Inch34, protected Nanometer
    {
    public:
    	void adjustVolume(){ std::cout<<"纳米技术_液晶电视34英寸 Pureflat34 AdjustVolume\n"; }
    	void switchChannel(){ std::cout<<"纳米技术_液晶子电视34英寸 Pureflat34 SwitchChannel\n";}
    	void adjustLight(){ std::cout<<"纳米技术_调节音量_液晶电视34英寸\n";}
    	~D34(){}
    };
    #endif;
    

      

  • 相关阅读:
    java File获取字节流
    mybatis返回自增主键问题踩坑
    电脑右键没有新建选项解决
    mysql 索引
    高并发-原子性-AtomicInteger
    Cannot find the declaration of element 'ehcache'.
    CSRF拦截
    java责任链模式
    java实现一个简单的计数器
    Java并发编程
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2357765.html
Copyright © 2011-2022 走看看