• 设计模式之十(外观模式)


    前言

    外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一系统更加容易使用.

    结构图

    SubSystem  Class 子系统类集合 实现子系统的功能,处理Facade对象指派的任务,注意子类中没有Facade的任何信息,即没有对Facade对象的引用

    代码实现

     首先是四个子系统的类

    public class SubSystemOne
        {
            public void MethodOne()
            {
                Console.WriteLine("子系统方法一");
            }
        }
    
        public class SubSystemTwo
        {
            public void MethodTwo()
            {
                Console.WriteLine("子系统方法二");
            }
        }
    
        public class SubSystemThree
        {
            public void MethodThree()
            {
                Console.WriteLine("子系统方法三");
            }
        }
    
        public class SubSystemFour
        {
            public void MethodFour()
            {
                Console.WriteLine("子系统方法四");
            }
        }
    

     外观类

        public class Facade
        {
            SubSystemOne one;
            SubSystemTwo two;
            SubSystemThree three;
            SubSystemFour four;
            public Facade()
            {
                one = new SubSystemOne();
                two = new SubSystemTwo();
                three = new SubSystemThree();
                four = new SubSystemFour();
            }
    
            public void MethodA()
            {
                Console.WriteLine("
    方法组A()----");
                one.MethodOne();
                two.MethodTwo();
                four.MethodFour();
            }
    
            public void MethodB()
            {
                Console.WriteLine("
    方法组B()----");
                two.MethodTwo();
                three.MethodThree();
            }
        }
    

     客户端调用

        class Program
        {
            static void Main(string[] args)
            {
                Facade facade = new Facade();
                facade.MethodA();
                facade.MethodB();
                Console.ReadLine();
            }
        }
    

     运行结果如下

    总结

    首先,在设计初期阶段,应该要有意识的将不同的两个层分离。

    其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂。增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。

    第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了。可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。

  • 相关阅读:
    门头沟PHP,java编程兴趣小组欢迎大家的加入。
    mysql数据库怎么存入emoji表情,更改utf8mb4后为什么出现全是问号
    Laravel发送邮件配置-问题解决
    php版本低更换php版本-问题以解决
    极光客户互动云java post请求
    【问题解决】增加https后 phpcms 分页错误
    阿里云阿里免费ssl wap网站在手机微信、手机浏览器无法访问
    Kali Linux on Android # 实测:小米2s离线安装Kali Linux
    3-1 LVS-NAT集群
    使用LVM方式安装Ubuntu 16.04
  • 原文地址:https://www.cnblogs.com/aehyok/p/3315983.html
Copyright © 2020-2023  润新知