3.3 《硬啃设计模式》第12章 超级手机 - 外观模式(Facade Pattern)

2024-05-23 02:48

本文主要是介绍3.3 《硬啃设计模式》第12章 超级手机 - 外观模式(Facade Pattern),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

你需要设计一台超级手机的操作系统,用户可以对各个方面进行详细的定制,如:铃声、桌面、图标、颜色、播放器喜好、浏览器设置等等。
太详细的设置对于一般用户来说太复杂了,但高级用户又很喜欢这些超详细的设置。
你有什么好的设计方案?

先分析一下几种类型的手机用户:
发烧型:事无大小什么都喜欢试一试,手机的所有功能都想去琢磨一下。
懒惰型:喜欢简单,最好就是能有一些什么会议模式、户外模式之类的,只需要选了相应模式,就自动设好全部相关内容。
中庸型:大部分情况下喜欢简单,但偶尔也会发烧。

手机的操作系统,可能是这样设计的:

外观1.png  

程序可以调用各类的各种方法,对手机进行详细的设置。
Ring.SelectMusic();
Screen.SetBrightness();
Icon.SetIcon();
……

这样详细的设置,对于发烧友来说自然是好事,但对于贪图简单的用户来说就有点烦了,要调用几十次这样的方法。

我们看看应用了外观模式的设计:

外观2.png  

该设计在原来设计基础上增加了EasyMode类,将常用的操作包装进去。EasyMode含有原来各类的引用,将各类常见操作写进各方法中。用户只需要调用EasyMode的方法,就能起到要分别调用各类方法的效果,节省了不少工作。喜欢高级操作的用户,则可以不理EasyMode类,直接调用原来各类的方法。

外观模式 类图

外观3.png  

外观模式最核心思想就是同时提供复杂接口和简单接口,供调用者根据需要使用。




请看下一文……

作者:张传波

创新工场创业课堂(敏捷课程)讲师

软件研发管理资深顾问

CMMI首席专家

《火球——UML大战需求分析》作者

《硬啃设计模式》作者

www.umlonline.org创办人


这篇关于3.3 《硬啃设计模式》第12章 超级手机 - 外观模式(Facade Pattern)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996107

相关文章

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法