上一节适配器模式最后引出了外观模式,再重申一下外观模式的作用。它是一个改变接口的新模式,但是改变接口的原因是为了简化接口。它将一个或数个类的复杂的一切隐藏在背后,只显露出一个干净美好的外观。
场景描述
假设我们家里建立一套家庭影院,经过一番研究,组装了一套杀手级的系统 。内含DVD播放器、投影机、自动屏幕、环绕立体声,甚至还有爆米花机。花了好几个星期布线、挂上投影机、连接所有的装置并调试。现在,准备开始享受一部电影了,但是得先执行如下任务:
上一节适配器模式最后引出了外观模式,再重申一下外观模式的作用。它是一个改变接口的新模式,但是改变接口的原因是为了简化接口。它将一个或数个类的复杂的一切隐藏在背后,只显露出一个干净美好的外观。
假设我们家里建立一套家庭影院,经过一番研究,组装了一套杀手级的系统 。内含DVD播放器、投影机、自动屏幕、环绕立体声,甚至还有爆米花机。花了好几个星期布线、挂上投影机、连接所有的装置并调试。现在,准备开始享受一部电影了,但是得先执行如下任务:
还记得之前学的装饰者模式,是将对象包装起来,赋予它们新的职能。而这一篇要学的适配器模式目的相反,包装某些对象,让他们的接口看起来不像自己而像是别的东西。因为这样就可以在设计中,将类的接口转换成想要的接口。下面就来具体看看。
先说一说现实中的场景最典型的一个适配器场景,就是插座。我们国内的、欧洲的、美国的插座可能都不一样,出国的时候买的转接头,就是适配器。比如去欧洲,它插在国内的插头和欧洲的插座之间,不用改任何一方就实现了适配。这里的话,用策略模式的鸭子们来模拟一个场景,假设需要很多鸭子对象,鸭子不够了。手边有一个新的物种,火鸡,它有自己的接口。因为火鸡的接口不同,所以我们不能公然拿来用,那我们看下适配器模式在这个场景下是如何工作的。
命令模式把封装带到一个全新的境界,把方法调用封装起来。乍一听好像没什么特别的,不明白这个模式有什么特别的地方,下面就来详细看下。
假设有一个遥控器,上面有N个插槽,插槽中可以插入接口匹配的电器,比如电灯、电风扇之类。每一个插槽对应两个开关:ON、OFF,外加一个整体共用的撤销按钮,会撤销最后一个按钮的动作。这个场景的关键问题在于遥控器并不知道每个电器的内部实现,但是插上去却能控制电器的开关 ,遥控器与电器完全解耦。下面就看下命令模式是如何实现的。
下面将由浅入深,来逐步实现命令模式。
单例模式是用来创建只能有一个实例对象的模式,该模式虽然只有一个类,但却并没有想象中那么容易,下面我们就一起来学习下。
单例模式的类图上只有一个类,场景很简单,就是有一个类,让它只能实例化。
下面会列出几个版本的代码示例,其中有的版本是有问题的,最终逐步会实现成最终正确的版本。
本章将学习如何使用工厂模式来解放new操作符,如何从复杂的依赖关系中脱困。
书中描述了一个订购披萨的场景,披萨有很多种,但是每一种的制作过程都一样。用户在披萨商店下单,商店根据种类来制作各种披萨。工厂模式的实现使得构造各种类型披萨变得灵活。工厂方法又细分成了三种,分别是:简单工厂、抽象工厂和工厂方法。下面就逐个来看下。