外观/门面模式(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交互。

相关文章
|
7月前
|
设计模式 Java
Java设计模式:外观模式之优雅门面(九)
Java设计模式:外观模式之优雅门面(九)
|
8月前
|
设计模式
设计模式 | 门面模式 Facade
设计模式 | 门面模式 Facade
58 0
|
设计模式 Java
设计模式~门面(外观)模式(Facade)-08
目录 (1)优点 (2)缺点 (3)使用场景 (4)注意事项: (5)应用实例: (6)源码中的经典应用 代码 外观模式(Fac
69 0
|
设计模式 Java
Java设计模式-外观模式(Facade)
Java设计模式-外观模式(Facade)
|
设计模式
设计模式- 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. 翻译成中文就是:门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。
119 0
结构型-Facade
门面模式 与 装饰器模式(2)
门面模式 与 装饰器模式(2)
123 0
门面模式 与 装饰器模式(2)
|
前端开发 uml
门面模式 与 装饰器模式(1)
门面模式 与 装饰器模式(1)
135 0
门面模式 与 装饰器模式(1)
|
设计模式 Java
浅谈JAVA设计模式之——外观模式(Facade)
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
234 0
浅谈JAVA设计模式之——外观模式(Facade)
|
设计模式 Java 双11
JAVA设计模式(3)外观模式(门面模式)
2019年阿里云双11活动拼团:https://www.aliyun.com/1111/2019/group-buying-share 针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下。

热门文章

最新文章

下一篇
开通oss服务