zoukankan      html  css  js  c++  java
  • 门面(Facade)模式

    门面(Facade)模式  也叫 外观模式。

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

    /*
    * 门面(Facade)角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。
      在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。
    * 子系统(subsystem)角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。
      每一个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一个客户端而已。
    */

     如下代码 为

    Camera Light Sensor Alarm 定义了一个 SecurityFacade 门面, 客户端只要调用 SecurityFacade  实例就能查看所有类的数据

        /// <summary>
        /// 门面(Facade)模式
        /// 外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。
        /// </summary>
        class Program
        {
    
            private static SecurityFacade security;
            public static void Main(string[] args)
            {
                security = new SecurityFacade();
                security.Activate();
                Console.WriteLine("
    --------------------
    ");
                security.Deactivate();
    
                Console.ReadLine();
            }
        }
    
        /// <summary>
        /// 子系统(subsystem)角色 相机
        /// </summary>
        public class Camera
        {
            public void TurnOn()
            {
                Console.WriteLine("打开 camera.");
            }
            public void TurnOff()
            {
                Console.WriteLine("关闭 camera.");
            }
            public void Rotate(int degrees)
            {
                Console.WriteLine("Rotating the camera by {0} degrees.", degrees);
            }
        }
    
        /// <summary>
        /// 子系统(subsystem)角色  电灯
        /// </summary>
        public class Light
        {
            public void TurnOff()
            {
                Console.WriteLine("打开电灯.");
            }
            public void TurnOn()
            {
                Console.WriteLine("关闭电灯.");
            }
            public void ChangeBulb()
            {
                Console.WriteLine("changing the light-bulb.");
            }
        }
    
        /// <summary>
        /// 子系统(subsystem)角色  感应器
        /// </summary>
        public class Sensor
        {
            public void Activate()
            {
                Console.WriteLine("激活传感器.");
            }
            public void Deactivate()
            {
                Console.WriteLine("注销传感器.");
            }
    
            public void Trigger()
            {
                Console.WriteLine("The sensor has triggered.");
            }
        }
    
        /// <summary>
        /// 子系统(subsystem)角色  警报器
        /// </summary>
        public class Alarm
        {
    
            public void Activate()
            {
                Console.WriteLine("Activating the alarm.");
            }
            public void Deactivate()
            {
                Console.WriteLine("Deactivating the alarm.");
            }
            public void Ring()
            {
                Console.WriteLine("Ringing the alarm.");
            }
            public void StopRing()
            {
                Console.WriteLine("Stop the alarm.");
            }
        }
    
        /// <summary>
        /// 门面(Facade)角色
        /// </summary>
        public class SecurityFacade
        {
            private static Camera camera1, camera2;
            private static Light light1, light2, light3;
            private static Sensor sensor;
            private static Alarm alarm;
    
            static SecurityFacade()
            {
                camera1 = new Camera();
                camera2 = new Camera();
                light1 = new Light();
                light2 = new Light();
                light3 = new Light();
                sensor = new Sensor();
                alarm = new Alarm();
            }
    
            public void Activate()
            {
                camera1.TurnOn();
                camera2.TurnOn();
                light1.TurnOn();
                light2.TurnOn();
                light3.TurnOn();
                sensor.Activate();
                alarm.Activate();
            }
    
            public void Deactivate()
            {
                camera1.TurnOff();
                camera2.TurnOff();
                light1.TurnOff();
                light2.TurnOff();
                light3.TurnOff();
                sensor.Deactivate();
                alarm.Deactivate();
            }
  • 相关阅读:
    Failed at the node-sass@4.13.1 postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    页面跳转
    多行文字溢出显示省略号
    iview-select选择器组件的使用&设置默认选中的值
    iview中表单验证(遇到的问题)
    iview DatePicker type 为dateTime 时无法做表单验证!
    报错:[Vue warn]: Error in callback for watcher "value": "Value should be trueValue or falseValue."
    Jquery 数字滚动兼容小数
    validate表单验证-单独验证
    2020软件工程作业03
  • 原文地址:https://www.cnblogs.com/dragon-L/p/3782487.html
Copyright © 2011-2022 走看看