zoukankan      html  css  js  c++  java
  • 外观模式

    模式定义: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高级接口,该接口使得这一子系统更加容易使用。


    说白了,就是把不同类中的功能封装到一个类里,由客户端调用,客户端只需关心这一个封装类即可。该模式的本意,是既可以使用封装类调用默认组装规则,也可以使用具体类去自由组装。但这样其实并不符合迪米特法则,所以我改成了下面这样,只允许调用封装类,不过下面只适用于所有客户端都只使用同一种组装规则的情形。


    优点:符合迪米特法则,另外如果需要修改组装顺序或增减组装元素,也不需要修改客户端代码。

    #include <iostream>
     
    class WearClothes
    {
        void wear() { std::cout<<"穿戴衣帽"<<std::endl; }
        friend class Facade;
    };
     
    class WearSocks
    {
        void wear() { std::cout<<"穿袜子"<<std::endl; }
        friend class Facade;
    };
     
    class WearShoes
    {
        void wear() { std::cout<<"穿鞋子"<<std::endl; }
        friend class Facade;
    };
     
    struct Facade
    {
        void facade()
        {
            WearClothes *p1 = new WearClothes();
            WearSocks *p2 = new WearSocks();
            WearShoes *p3 = new WearShoes();
            p1->wear();                                                 
            p2->wear();
            p3->wear();
            delete p1,p2,p3;
        }                                                       };
    }
     
    int main()
    {
        Facade p;
        p.facade();
    }
  • 相关阅读:
    lamp
    ssh 交互脚本
    mysql 备份检测主从脚本
    RANDOM 猜数字脚本
    ansible+playbook 搭建lnmp环境
    集群搭建
    grafana
    nginx lnmp搭建
    shell 基础(1): 变量
    seq 增量输出命令
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/3952047.html
Copyright © 2011-2022 走看看