说说设计模式~门面模式(Facade)

简介:

门面模式(Facade)属于结构型模式的一种,它符合面向对象的封装原则,但又不符合开闭原则,呵呵,今天我们主要说它的优点,不谈缺点.

定义

门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。

技巧

我们在设计子类时,由于外部通过门面去访问它的功能,所以一般子类都会被声明为internal.

何时能用到它?

1、客户只需要使用某个复杂系统的子集,或者需要以一种特殊的方式与系统交互时,使用门面模式。
2、当需要跟踪原系统的使用情况时 ,使用门面模面模式。因为所有对系统的访问都经过FACADE,所以可以很容易地监视系统的使用 。
3、希望封装和隐藏原系统时。
4、编写新类的成本小于所有人使用和维护原系统使用所需的成本时

观察者模式的结构图

观察者模式实现说明

FacadeFactory:门面对象,对外公开,将子系统进行组合,或者将子系统进行条件的筛选等等

Sub1:子系统1,它实现了IFacade接口

Sub2:子类型2,它实现了IFacade接口

IFacade:统一接口,可有可无,子类型去实现它,有时在门面类里需要通过接口来访问子系统时,需要这个接口

观察者模式的C#实现

#region 门面
    public interface IFacade
    {
        void Implement();
    }
    public class FacadeFactory
    {
        int _subtype;
public FacadeFactory()
            : this(1)
        {

        }
public FacadeFactory(int subType) { _subtype = subType; } public void Action() { //情况1,子类型的组合 new Sub1().Implement(); new Sub2().Implement(); //情况2,子类型的选择 switch (_subtype) { case 1: new Sub1().Implement(); break; case 2: new Sub2().Implement(); break; default: throw new ArgumentException("子系统参数有误"); } } } internal class Sub1 : IFacade { public void Implement() { Console.WriteLine("这是子系统1"); } } internal class Sub2 : IFacade { public void Implement() { Console.WriteLine("这是子系统2"); } } #endregion

调用代码

  new FacadeFactory().Action();

结果截图

本文转自博客园张占岭(仓储大叔)的博客,原文链接:说说设计模式~门面模式(Facade),如需转载请自行联系原博主。

目录
相关文章
|
设计模式 算法
设计模式7 - 门面模式【Facade Pattern】
设计模式7 - 门面模式【Facade Pattern】
58 1
|
设计模式 算法 C++
设计模式之门面模式(C++)
设计模式之门面模式(C++)
|
6月前
|
设计模式 Java 应用服务中间件
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
59 1
|
6月前
|
设计模式
设计模式之-门面 Facade
设计模式之-门面 Facade
59 2
|
设计模式 Java 数据库连接
【设计模式——学习笔记】23种设计模式——外观模式Facade(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——外观模式Facade(原理讲解+应用场景介绍+案例介绍+Java代码实现)
104 0
|
6月前
|
设计模式
设计模式 | 门面模式 Facade
设计模式 | 门面模式 Facade
46 0
|
6月前
|
设计模式 传感器
将设计模式门面模式运用到生活当中
将设计模式门面模式运用到生活当中
|
6月前
|
设计模式
二十三种设计模式全面解析-外观模式(Facade Pattern)详解:简化复杂系统的奇妙之道
二十三种设计模式全面解析-外观模式(Facade Pattern)详解:简化复杂系统的奇妙之道
109 0
|
6月前
|
设计模式 Java 数据库连接
认真学习设计模式之外观模式(Facade Pattern)
认真学习设计模式之外观模式(Facade Pattern)
67 0
|
设计模式
设计模式系列教程(10) - 外观模式(门面模式)
设计模式系列教程(10) - 外观模式(门面模式)
97 0