zoukankan      html  css  js  c++  java
  • 设计模式C++实现——外观模式

    模式定义:

    外观模式提供了一个统一的接口,用来訪问子系统中的一群接口。外观定义了一个高层接口,让子系统更easy使用。

    模式结构:

    举例:

    构造一个家庭影院。当启动watchMovie方法时能够看电影,当使用endMovie时关闭电影。

    编程实现及运行结果:

    #include <iostream>
    using namespace std;
    //组件类
    class Amplifier
    {
    public:
    	void on()
    	{
    		cout << "Amplifier on" << endl;
    	}
    
    	void off()
    	{
    		cout << "Amplifier off" << endl;
    	}
    };
    
    
    class Tuner
    {
    public:
    	void on()
    	{
    		cout << "Tuner on" << endl;
    	}
    
    	void off()
    	{
    		cout << "Tuner off" << endl;
    	}
    };
    
    class DvdPlayer
    {
    public:
    	void on()
    	{
    		cout << "DvdPlayer on" << endl;
    	}
    
    	void off()
    	{
    		cout << "DvdPlayer off" << endl;
    	}
    };
    
    class Screen
    {
    public:
    	void on()
    	{
    		cout << "Screen on" << endl;
    	}
    
    	void off()
    	{
    		cout << "Screen off" << endl;
    	}
    };
    //家庭影院
    class HomeTheaterFacade
    {
    public:
    	//统一接口
    	void watchMovie()
    	{
    		amp.on();
    		tuner.on();
    		dvd.on();
    		screen.on();
    	}
    
    	void endMovie()
    	{
    		amp.off();
    		tuner.off();
    		dvd.off();
    		screen.off();
    	}
    	
    	HomeTheaterFacade(Amplifier am,
    	Tuner tune,
    	DvdPlayer dv,
    	Screen scree)
    	{
    		amp = am;
    		tuner = tune;
    		dvd = dv;
    		screen = scree;
    	}
    	//~HomeTheaterFacade(){}
    private:
    	Amplifier amp;
    	Tuner tuner;
    	DvdPlayer dvd;
    	Screen screen;
    };
    //客户代码
    int main()
    {
    	Amplifier amp;
    	Tuner tuner;
    	DvdPlayer dvd;
    	Screen screen;
    
    	HomeTheaterFacade homeTheaterFacade(amp,tuner,dvd,screen);;
    	homeTheaterFacade.watchMovie();
    	homeTheaterFacade.endMovie();
    	return 0;
    }


    运行结果:

    Amplifieron

    Tuneron

    DvdPlayeron

    Screenon

    Amplifieroff

    Tuneroff

    DvdPlayeroff

    Screenoff

    请按随意键继续. . .

    设计原则:

    最少知识原则:仅仅和你的密友谈话

  • 相关阅读:
    构造与析构的次序
    为什么析构函数常声明为虚函数
    偏移数组的二分查找
    字符串循环右移N位
    const 补充
    对类 sizeof
    指针与引用
    python小练习
    初学数据挖掘——相似性度量(一)
    每天进步一点点(二)
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7111485.html
Copyright © 2011-2022 走看看