• C# 设计模式-外观模式


    一.介绍  

      外观模式(Facade Pattern),也叫门面模式。属于结构型模式。为子系统中的一系列接口提供一个一致的界面,该模式提供了一个高层接口,这个接口使得这一子系统更加容易使用。

    二.实现

      外观模式是通过定义一个外观类将子类包装起来,来简化客户端所调用的方法。

    /// <summary>
    /// 外观类
    /// </summary>
    public class Facade
    {
    
        SubSystemA a = new SubSystemA();
        SubSystemB b = new SubSystemB();
        SubSystemC c = new SubSystemC();
    
        public void MethodA()
        {
            a.MethodA();
            b.MethodB();
        }
    
        public void MethodB()
        {
            b.MethodB();
            c.MethodC();
            a.MethodA();
        }
    }
    
    public class SubSystemA
    {
        public void MethodA()
        {
            Console.WriteLine("SubSystemA.MethodA");
        }
    }
    
    public class SubSystemB
    {
        public void MethodB()
        {
            Console.WriteLine("SubSystemB.MethodB");
        }
    }
    
    public class SubSystemC
    {
        public void MethodC()
        {
            Console.WriteLine("SubSystemC.MethodC");
        }
    }
    
    //调用
    public static void Main(string[] args)
    {
        Facade facade = new Facade();
        facade.MethodA();
        facade.MethodB();
    }

      使用了外观模式后,客户端只需要依赖外观类,使得客户端和子系统的依赖解耦。其实我们在开发过程中,都会使用过外观模式,比如三层架构就是其中一个例子。

    三.总结

      优点:

      1.外观模式对客户端屏蔽了子系统组件,从而简化了接口,减少了客户处理的对象数目并使得子系统的使用更加简单。

      2.外观模式实现了客户端和子系统之间的松耦合关系,而子系统内部的组件是紧耦合的。松耦合使得子系统的组件变化不会影响到客户端。

      缺点:

      1.如果新增新的子系统可能需要修改外观类,这就不符合开闭原则,不过这也是没法避免的。

  • 相关阅读:
    nio原理分析与代码实现
    SpringMvc下载excel文件
    centos6下mysql-5.5.21的安装
    CentOS下开启mysql远程连接,远程管理数据库
    客户端更新策略
    IDEA插件开发基础
    简易ORM(基于注解)
    尝试使用Java6API读取java代码
    Java源代码分析与生成
    Common Configration实验
  • 原文地址:https://www.cnblogs.com/shadoll/p/14296487.html
Copyright © 2020-2023  润新知