3.3 《硬啃设计模式》第12章 超级手机 - 外观模式(Facade Pattern)
2013-11-06 13:03
323 查看
你需要设计一台超级手机的操作系统,用户可以对各个方面进行详细的定制,如:铃声、桌面、图标、颜色、播放器喜好、浏览器设置等等。
太详细的设置对于一般用户来说太复杂了,但高级用户又很喜欢这些超详细的设置。
你有什么好的设计方案?
先分析一下几种类型的手机用户:
发烧型:事无大小什么都喜欢试一试,手机的所有功能都想去琢磨一下。
懒惰型:喜欢简单,最好就是能有一些什么会议模式、户外模式之类的,只需要选了相应模式,就自动设好全部相关内容。
中庸型:大部分情况下喜欢简单,但偶尔也会发烧。
手机的操作系统,可能是这样设计的:
程序可以调用各类的各种方法,对手机进行详细的设置。
Ring.SelectMusic();
Screen.SetBrightness();
Icon.SetIcon();
……
这样详细的设置,对于发烧友来说自然是好事,但对于贪图简单的用户来说就有点烦了,要调用几十次这样的方法。
我们看看应用了外观模式的设计:
该设计在原来设计基础上增加了EasyMode类,将常用的操作包装进去。EasyMode含有原来各类的引用,将各类常见操作写进各方法中。用户只需要调用EasyMode的方法,就能起到要分别调用各类方法的效果,节省了不少工作。喜欢高级操作的用户,则可以不理EasyMode类,直接调用原来各类的方法。
外观模式类图:
外观模式最核心思想就是同时提供复杂接口和简单接口,供调用者根据需要使用。
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
CMMI首席专家
《火球——UML大战需求分析》作者
《硬啃设计模式》作者
www.umlonline.org创办人
太详细的设置对于一般用户来说太复杂了,但高级用户又很喜欢这些超详细的设置。
你有什么好的设计方案?
先分析一下几种类型的手机用户:
发烧型:事无大小什么都喜欢试一试,手机的所有功能都想去琢磨一下。
懒惰型:喜欢简单,最好就是能有一些什么会议模式、户外模式之类的,只需要选了相应模式,就自动设好全部相关内容。
中庸型:大部分情况下喜欢简单,但偶尔也会发烧。
手机的操作系统,可能是这样设计的:
程序可以调用各类的各种方法,对手机进行详细的设置。
Ring.SelectMusic();
Screen.SetBrightness();
Icon.SetIcon();
……
这样详细的设置,对于发烧友来说自然是好事,但对于贪图简单的用户来说就有点烦了,要调用几十次这样的方法。
我们看看应用了外观模式的设计:
该设计在原来设计基础上增加了EasyMode类,将常用的操作包装进去。EasyMode含有原来各类的引用,将各类常见操作写进各方法中。用户只需要调用EasyMode的方法,就能起到要分别调用各类方法的效果,节省了不少工作。喜欢高级操作的用户,则可以不理EasyMode类,直接调用原来各类的方法。
外观模式类图:
外观模式最核心思想就是同时提供复杂接口和简单接口,供调用者根据需要使用。
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
CMMI首席专家
《火球——UML大战需求分析》作者
《硬啃设计模式》作者
www.umlonline.org创办人
相关文章推荐
- Nova Scheduler 调度过程简述
- PCM(44字节)的Wav文件头及其相关的编程方法
- win XP 不能访问无线wifi 补丁 Windows XP 更新程序 (KB893357)
- 轻松搞定面试中的链表题目
- 三星平台SD/MMC驱动分析
- 使用 jQuery Mobile 与 HTML5 开发 listView样式总结
- [Sciter系列] MFC下的Sciter–3.Sciter脚本与底层交互
- 服务器并发处理能力
- 关于短信猫MyMondem.SetThreadMode报错的解决方案
- 如何设计并使用FireMonkeyStyle
- python调用动态链接库传送protobuf数据
- 把win7装到内存上的虚拟硬盘,并且从虚拟硬盘启动
- 【C++】引用与变量
- 模版方法模式
- 从面向对象编程的角度解析c#中的事件处理机制
- C# 中事件
- acm常用技巧二 POJ 3061 POJ 3320 POJ 3276 尺取法
- 如何吸引用户打开自己发送的EDM邮件
- 解密中国互联网
- 宠物医院管理系统