【设计模式】门面

本文深入探讨了Facade模式的基本概念,解释了其在软件设计中的作用,以及如何在实际代码中实现这一模式。通过示例代码,展示了如何通过门面类简化系统的对外接口,减少客户端与复杂系统的交互复杂性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Facade(fe‘saad)模式,是一个没有固定类图的模式。

因为他要解决的是屏蔽一个子系统的对外的复杂性问题。

facade模式一般单独定义一个门面类(类似数据库中的view?),通过引用不同内部对象,并定义新的接口来实现。

本身比较简单,主要也是架构层面的考虑,跟之前一些模式比较,他应该是在更大的层面会应用到。

太简单了,贴出来占篇幅^_^

/**
 * @file test_facade.h
 * @author itegel
 * @date 2014/04/04 14:39:19
 * @brief 
 *  
 **/

#ifndef  __TEST_FACADE_H_
#define  __TEST_FACADE_H_

#include <iostream>

class A{
    public:
        A(){}
        void FunA(){
            std::cout<<"FunA()"<<std::endl;
        }
};

class B{
    public:
        B(){}
        void FunB(){
            std::cout<<"FunB()"<<std::endl;
        }
};

class C{
    public:
        C(A a, B b):a_(a),b_(b){
        
        }
        void DoAandB(){
            a_.FunA();
            b_.FunB();
        }
        void DoA(){
            a_.FunA();
        }
    private:
        A a_;
        B b_;
};


#endif  //__TEST_FACADE_H_

/**
 * @file test_facade.cpp
 * @author itegel 
 * @date 2014/04/04 14:43:19
 * @brief 
 *  
 **/

#include "test_facade.h"

int main(){
    A a;
    B b;
    C c(a, b);
   
    std::cout<<"Do A and B:"<<std::endl;
    c.DoAandB();
    std::cout<<"Do A:"<<std::endl;
    c.DoA();

    return 0;
}

output:

Do A and B:
FunA()
FunB()
Do A:
FunA()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值