zoukankan      html  css  js  c++  java
  • 设计模式のFacadePattern(外观模式)----结构模式

    一、产生背景

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

    这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

    二、一般做法

    Facade:负责子系统的的封装调用

    Subsystem Classes:具体的子系统,实现由外观模式Facade对象来调用的具体任务

    三、实例

    1、子系统一

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace FacadePattern
    {
        /// <summary>
        /// 子系统1
        /// </summary>
        public class SubSystem1
        {
            public void Print1()
            {
                Console.WriteLine("SubSystem1");
            }
        }
    }

    2、子系统二

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace FacadePattern
    {
        /// <summary>
        /// 子系统1
        /// </summary>
        public class SubSystem2
        {
            public void Print2()
            {
                Console.WriteLine("SubSystem2");
            }
        }
    }

    3、外观

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace FacadePattern
    {
        /// <summary>
        ///  外观模式对外接口类
        /// </summary>
        public class Facade
        {
            private SubSystem1 _subSystem1;
            private SubSystem2 _subSystem2;
    
            public Facade()
            {
                _subSystem1 = new SubSystem1();
                _subSystem2 = new SubSystem2();
            }
    
            public void Print()
            {
                _subSystem1.Print1();
                _subSystem2.Print2();
            }
        }
    }

    4、客户端

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace FacadePattern
    {
        //外观模式
    
        class Program
        {
            static void Main(string[] args)
            {
                Facade facade = new Facade();
                facade.Print();
                Console.ReadLine();
            }
        }
    }

    四、设计模式分析

    优点:

    1. 外观模式对客户屏蔽了子系统组件,从而简化了接口,减少了客户处理的对象数目并使子系统的使用更加简单。
    2. 外观模式实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件是紧耦合的。松耦合使得子系统的组件变化不会影响到它的客户。

    缺点:

    1. 如果增加新的子系统可能需要修改外观类或客户端的源代码,这样就违背了”开——闭原则“(不过这点也是不可避免)。
  • 相关阅读:
    NPOI 操作 excel 帮助类
    文件帮助类
    浮点数精度问题
    多段文本显示省略号
    数字排序
    删除字符串首位空格
    生成一定范围的随机数
    锚链接动画
    原生js转json
    弹出遮罩和对话框
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/8510233.html
Copyright © 2011-2022 走看看