组合模式
概要
组合多个对象形成树形结构用来表示具有部分—整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象
组合模式的关键在于定义了一个抽象构件类,它既可以代表叶子,又可以代表容器。
客户端针对该抽象构建类进行编程,无需知道它到底表示的是叶子还是容器,可以对他进行统一的管理。
需求
你在开发一款模拟经营游戏。
这款游戏里有农田Farm,农田上可以种水果Fruit,也可以种水稻Wheat,还可以种花Grass。
- 水果/水稻/花都可以卖掉
- 水果/水稻/花都是有价格的,策划需要我们提供一个方法可以获得它们的价格
- 水果/水稻/花都可以快速收获,快速收获可以直接获得相对应的奖励
- 农田是一种建筑,可以被回收(水果/水稻/花不能被回收)
这还不简单嘛,Fruit/Wheat/Grass都继承Crop这个抽象基类,Crop定义Sell(),GetPrice(),QuickHarvest()三个方法。
Farm继承Item这个基类,Item定义了Recycle方法。
然后再给