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;
    

      

  • 相关阅读:
    elasticsearch + kibana 安装
    JSON Web Token
    JConsole和VisualVM远程访问JMX
    DNS域名解析
    Spring Cloud(2)主要组件应用实例
    Docker(三):Docker入门教程-CentOS Docker 安装
    Spring Cloud(1)相关概念
    Zookeeper实现哨兵机制
    大数据学习笔记之初识Hadoop
    大数据学习笔记之大数据概述
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2357765.html
Copyright © 2011-2022 走看看