博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
外观模式(Facade)
阅读量:6336 次
发布时间:2019-06-22

本文共 3587 字,大约阅读时间需要 11 分钟。

1 /*  2  * 一个保安系统的,由录像机、电灯、红外线监控和警报器组成。保安系统的操作  3  * 人员需要经常将这些仪器启动和关闭。保安类需要用到所有的录像机(Camera)、  4  * 电灯(Light)、感应器(Sensor)和警报器(Alarm)对象,保安觉得使用不方便。应  5  * 用外观模式,用C#控制台应用程序改进该设计。  6  */  7 using System;  8 using System.Collections.Generic;  9 using System.Linq; 10 using System.Text; 11  12 namespace Facade 13 { 14     //照相机类 15     class Camera 16     { 17         public void Start() 18         { 19             Console.WriteLine("启动录像机。"); 20         } 21         public void Close() 22         { 23             Console.WriteLine("关闭录像机。"); 24         } 25     } 26     //灯光类 27     class Light 28     { 29         public void Start() 30         { 31             Console.WriteLine("启动灯光。"); 32         } 33         public void Close() 34         { 35             Console.WriteLine("关闭灯光。"); 36         } 37     } 38     //感应器类 39     class Sensor 40     { 41         public void Start() 42         { 43             Console.WriteLine("启动感应器。"); 44         } 45         public void Close() 46         { 47             Console.WriteLine("关闭感应器。"); 48         } 49     } 50     //警报器类 51     class Alarm 52     { 53         public void Start() 54         { 55             Console.WriteLine("启动警报器。"); 56         } 57         public void Close() 58         { 59             Console.WriteLine("关闭警报器。"); 60         } 61     } 62     //遥控器类 63     class RemoteControl 64     { 65         private Alarm alarm; 66         private Sensor sensor; 67         private Light light; 68         private Camera camera; 69  70         public RemoteControl() 71         { 72             alarm = new Alarm(); 73             sensor = new Sensor(); 74             light = new Light(); 75             camera = new Camera(); 76         } 77         public void StartCamera() 78         { 79             camera.Start(); 80         } 81         public void CloseCamera() 82         { 83             camera.Close(); 84         } 85         public void StartLight() 86         { 87             light.Start(); 88         } 89         public void CloseLight() 90         { 91             light.Close(); 92         } 93         public void StartSensor() 94         { 95             sensor.Start(); 96         } 97         public void CloseSensor() 98         { 99             sensor.Close();100         }101         public void StartAlarm()102         {103             alarm.Start();104         }105         public void CloseAlarm()106         {107             alarm.Close();108         }109     }110     //保安类111     class Security112     {113         private string name;114         private RemoteControl rc;115         public Security(string name,RemoteControl rc)116         {117             this.name = name;118             this.rc = rc;119             Console.WriteLine("{0}值班中。他手里拿了一个遥控器。\n", name);120         }121         public RemoteControl Control()122         {123             return this.rc;124         }125     }126     class Program127     {128         static void Main(string[] args)129         {130             Security baoan = new Security("包鞍",new RemoteControl());131 132             baoan.Control().StartAlarm();133             baoan.Control().StartCamera();134             baoan.Control().StartLight();135             baoan.Control().StartSensor();136 137             Console.WriteLine("");138             baoan.Control().CloseAlarm();139             baoan.Control().CloseCamera();140             baoan.Control().CloseLight();141             baoan.Control().CloseSensor();142         }143     }144 }

 

本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/05/18/2508401.html,如需转载请自行联系原作者

你可能感兴趣的文章
解决部分月份绩效无法显示的问题:timestamp\union al\autocommit等的用法
查看>>
nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转
查看>>
man openstack >>1.txt
查看>>
linux几大服务器版本大比拼
查看>>
在BT5系统中安装postgresQL
查看>>
【Magedu】Week01
查看>>
写给MongoDB开发者的50条建议Tip25
查看>>
为什么要让带宽制约云计算发展
查看>>
2012-8-5
查看>>
VS中ProjectDir的值以及$(ProjectDir)../的含义
查看>>
我的友情链接
查看>>
PHP实现排序算法
查看>>
Business Contact Mnanager for Outlook2010
查看>>
9种用户体验设计的状态是必须知道的(五)
查看>>
解决WIN7下组播问题
查看>>
陈松松:视频营销成交率低,这三个因素没到位
查看>>
vmware nat模式原理探究,实现虚拟机跨网段管理
查看>>
JavaSE 学习参考:集合运算
查看>>
【Signals and Systems】 SYLLABUS
查看>>
RH135-2-command-line-interface
查看>>