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 (这个人总结写得好。)





原创粉丝点击