想设计一套城建的架构模型,以几个基本的单位举例:Barrack(兵营),Army(士兵),Ship(资源船),Arena(竞技场)
我的想法是:
1:设计两个接口Buildable(可建造的)和Upgradable(可升级的),分别给出相应的skeletal implementation:AbstractBuilding和AbstractUpgrade,封装好Build和Upgrade的模板方法,子类直接用
2:业务逻辑需求,Barrack可以建造也可以升级、Arena只能建造、Ship和Army只能升级。特殊的地方在Barrack这个类,因为它可以利用AbstractBuilding和AbstractUpgrade里面的两个模板方法,但由于无法多继承,可以通过模拟多继承(内部类、聚合)的手段实现。
但是这个架构逻辑感觉很不爽,还有很多种建筑和Barrack一样是既能建造也能升级的,每一个都要通过模拟多继承来达到复用两个skeletal implementation模板方法的目的吗?
|
|