外观/门面模式(Facade)

简介: 外观/门面模式(Facade)

外观/门面模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

#include <vector>
#include <iostream>
using namespace std; 
class Base{
    public:
        virtual void Product()=0;
};
class ProductA:public Base{
    public:
        void Product()
        {
            cout<<"A"<<endl;
        }
};
class ProductB:public Base{
    public:
        void Product()
        {
            cout<<"B"<<endl;
        }
};
class ProductC:public Base{
    public:
        void Product()
        {
            cout<<"C"<<endl;
        }
};
template <typename T>class Facade{
    private:
        vector <T> vec;
        public:
            void Add(T t)
            {
                vec.push_back(t);
            }
/*可以定义多个函数实现不同的遍历顺序在此处我们是如何进入就如何输出,类似于队列*/
            void Product()
            {
           vector <T>::iterator it;//typename
               for(it=vec.begin();it!=vec.end();it++)
               (*it)->Product();
            }           
};
int main(void)
{
    Base *pa=new ProductA();
    Base *pb=new ProductB();
    Base *pc=new ProductC();
    /*以下是外观模式核心*/
Facade <Base *> p;
    p.Add(pa);
    p.Add(pb);
    p.Add(pc);
    p.Product();
    return 0;
}

何时使用外观模式(摘自大话设计模式):

首先,在设计初期阶段,应该要有意识的将不同的两个层分离。

其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大所属的模式使用时也都会产生很多很小的类,这本是好事,也给外部调用带来了巨大的困难,增加外观Façade可以提供一个简单的接口,减少它们之间的依赖。(可以理解成将非常复杂的各种模式打包起来,我们只需要提供借口)

第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,但因为它暴汗非常重要的功能,新的需求开发必须要依赖于他,那么可以外新系统开发一个外观类Façade,让新系统与Façade交互。

相关文章
|
6月前
|
设计模式
设计模式 | 门面模式 Facade
设计模式 | 门面模式 Facade
49 0
|
设计模式 Java
设计模式~门面(外观)模式(Facade)-08
目录 (1)优点 (2)缺点 (3)使用场景 (4)注意事项: (5)应用实例: (6)源码中的经典应用 代码 外观模式(Fac
55 0
|
设计模式 API C++
2023-6-27-第九式外观模式
2023-6-27-第九式外观模式
74 0
|
设计模式 Java
Java设计模式-外观模式(Facade)
Java设计模式-外观模式(Facade)
|
设计模式
我学会了,外观模式
外观模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
126 0
我学会了,外观模式
|
设计模式
设计模式- Facade门面模式和Mediator调停者模式
设计模式- Facade门面模式和Mediator调停者模式
|
设计模式 Linux Shell
结构型-Facade
门面模式的原理与实现 门面模式,也叫外观模式,英文全称是 Facade Design Pattern。在 GoF 的《设计模式》一书中,门面模式是这样定义的: Provide a unified interface to a set of interfaces in a subsystem. Facade Pattern defines a higher-level interface that makes the subsystem easier to use. 翻译成中文就是:门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。
112 0
结构型-Facade
|
设计模式 Java
浅谈JAVA设计模式之——外观模式(Facade)
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
221 0
浅谈JAVA设计模式之——外观模式(Facade)
门面模式(Facade)
Facade模式的几个要点 从客户程序的角度来看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的任何变化不会影响到Facade接口的变化。
891 0