zoukankan      html  css  js  c++  java
  • 【设计模式】外观模式

    外观模式:它为子系统中的一组接口提供一个统一的高层接口。使得子系统更easy使用。这事实上就是一个分层的思想,将较低层复杂的操作交由较高层同一管理,并向用户程序提供简单易用的接口。外观模式的UML图例如以下:


    以下是一个用C++编写的外观模式的样例。

    #include <iostream>
    #include <string>
     
    using namespace std;
     
    // 键盘类
    class Keyboard {
    public:
        string Type(const string &input)
        {
            return input;
        }
    };
     
    // 主存类
    class Memory {
    public:
        string data;
    };
     
    // 显示器类
    class Monitor {
    public:
        void Display(const string &output)
        {
            cout << output << endl;
        }
    };
     
    // 操作系统类
    class OperatingSystem {
    public:
        void Input(const string &input)
        {
            memory.data = keyboard.Type(input);
        }
        void Output()
        {
            monitor.Display(memory.data);
        }
    private:
        // 由操作系统管理主存、I/O设备
        Keyboard keyboard;
        Memory memory;
        Monitor monitor;
    };
     
    int main()
    {
        OperatingSystem os;
     
        os.Input("Hello world!");
        os.Output();
     
        system("pause");
        return 0;
    }

    执行结果:


    由于操作系统正好运用了分层的思想来管理底层的硬件,所以这个样例便是模仿操作系统。Keyboard、Memory、Monitor三个类被称为子系统类集合。这些类中定义了各自的操作。

    OperatingSystem被称为外观类,它包括了子系统类并对它们进行管理。当用户向程序向os输入数据时,os对象中的Input方法操控键盘和主存。将输入数据保存到主存中。当用户代码运行输出操作时。os对象中的Output方法操控主存和显示器。将刚才读入的数据输出到显示器上。

    对于用户代码来说,使用起来就很easy了,由于复杂的逻辑全然封装在OperatingSystem,也就是外观类其中了。

    參考:

    《大话设计模式》文章12章

  • 相关阅读:
    六类人最适合做程序员!不善于撩妹的人竟然当选...哈哈
    20170926-构建之法:现代软件工程-阅读笔记
    Android Studio新建类头部注释和添加函数注释模板及快捷键
    android AysncTask使用
    Android Studio配置git,实现项目在github上的版本同步
    avloadingindicatorview 使用解析
    retrofit 基础使用
    retrofit 使用解析
    关于HTTP
    单例模式
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5034117.html
Copyright © 2011-2022 走看看