A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

想设计一套城建的架构模型,以几个基本的单位举例:Barrack(兵营),Army(士兵),Ship(资源船),Arena(竞技场)

我的想法是:
1:设计两个接口Buildable(可建造的)和Upgradable(可升级的),分别给出相应的skeletal implementation:AbstractBuilding和AbstractUpgrade,封装好Build和Upgrade的模板方法,子类直接用

2:业务逻辑需求,Barrack可以建造也可以升级、Arena只能建造、Ship和Army只能升级。特殊的地方在Barrack这个类,因为它可以利用AbstractBuilding和AbstractUpgrade里面的两个模板方法,但由于无法多继承,可以通过模拟多继承(内部类、聚合)的手段实现。

但是这个架构逻辑感觉很不爽,还有很多种建筑和Barrack一样是既能建造也能升级的,每一个都要通过模拟多继承来达到复用两个skeletal implementation模板方法的目的吗?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马