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");
            }
        }
    }
  • 相关阅读:
    关于跨域名访问,反向代理系列话题集锦
    中国B2C电子商务最新发展状况调查分析(转)
    顶部导航条(Top Navigation Bar)_Yahoo_Pattern(翻译)
    google,百度,yahoo,msn,ASK网址登录和网站地图提交地址
    如何安装PE到硬盘(包括移动硬盘)分区
    ASP.NET SQL 注入免费解决方案
    O2O循环圈
    B2C暴利行业之保健品行业
    在SQLserver2005中如何对运行慢的查询进行分析?
    互联网产品设计之需求管理
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/4641673.html
Copyright © 2011-2022 走看看