书上给代理模式的定义是:控制和管理访问。具体是要控制和管理什么,我们本章就来学习下。
场景描述
继续沿用上一章糖果机的例子,假如现在希望能够更好的监控糖果机,要生成一份库存以及机器状态的报告。拷贝上一章最终版的代码,稍做修改即可。
书上给代理模式的定义是:控制和管理访问。具体是要控制和管理什么,我们本章就来学习下。
继续沿用上一章糖果机的例子,假如现在希望能够更好的监控糖果机,要生成一份库存以及机器状态的报告。拷贝上一章最终版的代码,稍做修改即可。
书上对该模式的第一解释是:策略模式和状态模式是双胞胎,在出生时才分开。暂时不太明白,我们继续往下学。
假设现在要实现一个糖果贩卖机,投一美分硬币,转动曲柄,机器判断是否有糖,有的话吐出来,售罄的话将硬币退还。这个过程会涉及到一系列的状态,比如说:有没有投币、是否已售罄等。下面用实例变量的普通方式来实现这个场景。
本章节将学组合模式,来解决上一节遗留的问题。这个模式能够创建一个树形结构,在同一个结构中处理嵌套菜单和菜单项组。场景在上一章已经描述清楚了,下面就直接来实现。
创建一个组件接口来作为菜单和菜单项的共同接口,让我们能够用统一的做法来处理菜单和菜单项。该接口提供一些默认方法,默认行为都是抛出不支持异常,菜单和菜单项针对各自的情况进行重写。
这个模式从字面上就大概能知道是什么意思,我们将要学习如何能让用户遍历你的对象而又无法窥视你存储对象的方式。
假设有两个餐厅,一个是做早餐的,另外一个是做午餐的。其中一个菜单是使用ArrayList来记录菜单项,而另一家用的是数组。现在两家餐厅合并了,在不大改的情况下,两种餐单如何做兼容。先看下两家菜单当前的实现:
这个模式光看名字,真的是不知所云,我看了下简介,意思是是深入封装算法。还记得第一个策略模式讲的就是算法族的封装。下面来学习一下,看看两者有什么异同。
这里模拟了一个甜品店制作咖啡和茶的过程。制作咖啡的过程如下:
制作茶的过程如下:
可以看出制作咖啡和茶的过程非常相似。下面就来实现这个场景。