zoukankan      html  css  js  c++  java
  • 11.外观模式(Facade Pattern)

    using System;
    
    namespace ConsoleApplication4
    {
        class Program
        {
            /// <summary>
            /// 不使用外观模式的情况
            /// 此时客户端与三个子系统都发送了耦合,使得客户端程序依赖与子系统
            /// 为了解决这样的问题,我们可以使用外观模式来为所有子系统设计一个统一的接口
            /// 客户端只需要调用外观类中的方法就可以了,简化了客户端的操作
            /// 从而让客户和子系统之间避免了紧耦合
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                SubSystemA a = new SubSystemA(); 
                SubSystemB b = new SubSystemB(); 
                SubSystemC c = new SubSystemC(); 
                a.MethodA(); 
                b.MethodB(); 
                c.MethodC(); 
                Console.Read();
            }
        }
    
        // 子系统A
        public class SubSystemA
        {
            public void MethodA()
            {
                Console.WriteLine("执行子系统A中的方法A");
            }
        }
    
        // 子系统B
        public class SubSystemB
        {
            public void MethodB()
            {
                Console.WriteLine("执行子系统B中的方法B");
            }
        }
    
        // 子系统C
        public class SubSystemC
        {
            public void MethodC()
            {
                Console.WriteLine("执行子系统C中的方法C");
            }
        }
    }
    using System;
    
    namespace ConsoleApplication4
    {
        class Program
        {
            private static RegistrationFacade facade = new RegistrationFacade();
    
            /// <summary>
            /// 不使用外观模式的情况
            /// 此时客户端与三个子系统都发送了耦合,使得客户端程序依赖与子系统
            /// 为了解决这样的问题,我们可以使用外观模式来为所有子系统设计一个统一的接口
            /// 客户端只需要调用外观类中的方法就可以了,简化了客户端的操作
            /// 从而让客户和子系统之间避免了紧耦合
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                facade.RegisterSystem(1);
                facade.RegisterSystem(2);
                facade.RegisterSystem(3);
                Console.Read();
            }
        }
    
        public class RegistrationFacade
        {
            private SubSystemA RegistrationA;
            private SubSystemB RegistrationB;
            private SubSystemC RegistrationC;
            public RegistrationFacade()
            {
                RegistrationA = new SubSystemA();
                RegistrationB = new SubSystemB();
                RegistrationC = new SubSystemC();
            }
    
            public void RegisterSystem(int type)
            {
                if (type == 1)
                {
                    RegistrationA.MethodA();
                }
                else if (type == 2)
                {
                    RegistrationB.MethodB();
                }
                else if (type == 3)
                {
                    RegistrationC.MethodC();
                }
            }
        }
    
        // 子系统A
        public class SubSystemA
        {
            public void MethodA()
            {
                Console.WriteLine("执行子系统A中的方法A");
            }
        }
    
        // 子系统B
        public class SubSystemB
        {
            public void MethodB()
            {
                Console.WriteLine("执行子系统B中的方法B");
            }
        }
    
        // 子系统C
        public class SubSystemC
        {
            public void MethodC()
            {
                Console.WriteLine("执行子系统C中的方法C");
            }
        }
    }
  • 相关阅读:
    <img />标签 alt title
    ubuntu中rar与unrar用法详解
    vi及缩进设置
    ubuntu下读取数据库中文乱码解决
    ubuntu下phpstorm无法输入中文的解决办法
    ubuntu下mysqli_connect()显示未定义,mysqli_fetch_all()显示未定义 解决方法
    权限控制
    NULL
    ubuntu下chromium 安装flash player
    手把手教你把Vim改装成一个IDE编程环境(图文)
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/4641673.html
Copyright © 2011-2022 走看看