Unity常用的设计模式_外观模式
来源:互联网 发布:mobi 阅读软件 编辑:程序博客网 时间:2024/06/16 09:02
外观模式
1.问题说明
外观模式是生活中最容易碰到的设计模式。
例如一台汽车需要很多子系统配合才能完成跑动的功能,这些子系统有引擎系统,传动系统,悬吊系统等等。但对于驾驶者来说并不需要了解这些子系统是如何协调工作的,只需要通过高级接口(方向盘,踏板,仪表盘等)就可以情丝操控汽车。
又例如电饭锅,子系统有(电源供应系统,加入系统,冷却系统等),我们只需要操作高级接口(电饭锅上的按钮面板)就可以完成煮饭这个事件。
还有网站首页和模块跳转,房间电器电源控制等等
2.外观模式动机
使用外观模式降低用户与子系统之间的复杂度,降低系统的耦合度。
3.外观模式定义
为子系统定义一组统一的接口,这个高级的接口会让子系统更容易被使用。
4.外观模式结构
5.外观模式主要代码(房间电源控制例子)
例子:为了使用方便,一个电源总开关可以控制4盏电灯,1个风扇,1台电视的启动和关闭,通过总开关同时控制上述电器的设备。
电灯类
Light.cs
public class Light{/*位置*/private string position;public LightString(string position){this.position = position;}/*开灯*/public void ON(){Debug.Log(this.position + "开灯");}/*关灯*/public void OFF(){Debug.Log(this.position + "关灯");}}
风扇类
Fan.cs
public class Fan{public void ON(){Debug.Log("开风扇");}public void OFF(){Debug.Log("关风扇");}}
电视类
TV.cs
public class TV{public void ON(){Debug.Log("开电视");}public void OFF(){Debug.Log("关电视");}}
外观类
GeneralSwitchFacade.cs
public class GeneralSwitchFacade{/*4盏灯*/private Light[] light = new Light[4]; /*风扇*/private Fan fan;/*电视*/private TV tv;public GeneralSwitchFacade(){light[0] = new Light("左前");light[1] = new Light("左后");light[2] = new Light("右前");light[3] = new Light("右后");fan = new Fan();tv = new TV();}public void ON(){light[0].ON();light[1].ON();light[2].ON();light[3].ON();fan.ON();tv.ON();}public void OFF(){light[0].OFF();light[1].OFF();light[2].OFF();light[3].OFF();fan.OFF();tv.OFF();}}
使用外观模式,只要控制外观类对象,就可以实现所有设备一起开启和一起关闭功能。
6.总结:
优点:向客户端屏蔽子系统组件,减少客户处理对象数目并使子系统使用起来更加容易。
缺点:不能很好地限制客户使用子系统类,如果客户访问子系统类做太多限制则减少了可变性和灵活性。
7.参考
《设计模式》主编:刘伟
http://blog.csdn.net/hguisu/article/details/7533759 (这个人总结写得好。)
阅读全文
0 0
- Unity常用的设计模式_外观模式
- Unity常用的设计模式_单例模式
- Unity常用的设计模式_观察者模式
- Unity常用的设计模式_状态模式
- 设计模式_外观模式
- Unity常用的设计模式
- Unity常用的设计模式_工厂模式系列之简单工厂模式
- Unity常用的设计模式_工厂模式系列之工厂方法模式
- Unity常用的设计模式_工厂模式系列之抽象工厂模式
- 大话设计模式_外观模式
- java设计模式_外观模式
- Java 设计模式_外观模式
- 设计模式_ 外观模式(12)
- Unity_设计模式_外观模式_06
- 最常用的设计模式---外观模式(C++实现)
- java最常用的设计模式之一外观模式
- 常用设计模式之外观模式
- Java设计模式_(结构型)_外观模式
- 实习报告二
- JSON快速入门之GSON
- 压缩图片并根据图片md5 存储的一种优化解决方案
- 多核编程中伪共享问题(false sharing)
- 阿里巴巴2016 实习生招聘 练习题(一)
- Unity常用的设计模式_外观模式
- PHP打印 日期(时间)
- js总结-持续更新。。。。。
- 剑指offer--面试题13:机器人的运动范围
- php(tp) 递归删除缓存方法
- 测测你的java基本功
- maven手动导入jar
- React简单Demo
- HIT-1867-树状数组