目录
声明
此设计模式是本人原创,可能会有缺陷不足,而且更适用于属性冗余的类使用,比如 游戏。
比如Minecraft,本人也是在编写Minecraft 模组的时候想的此模式。
因为要写Minecraft 模组,离不开注册ID、本地化ID和各种属性,初始化比较复杂、冗余。
玩过Minecraft 匠魂模组的话,应该会比较容易理解,因为此设计模式的思路就是来自匠魂模组的工具制作。
模块
模版 : 类 | 要什么功能就实现什么组件,可以继承模版。
组件: 接口 | 只有一个方法,就是获取该组件对应的组件数据。
组件数据: 类 | 存储组件的数据,属于实体类。
实例
题目
武器:剑,斧头,铲子
模版
- 基础工具: 实现:基础组件
- 剑: 继承:基础工具,实现:伤害,挥舞
- 斧头: 继承:基础工具,实现:伤害,砍伐
- 铲子: 继承:基础工具,实现:伤害,铲土
组件
以下皆只有一个方法:get相应数据,比如 BasicPojo getBasic();----基础组件
- 基础:
- 伤害:
- 破坏:
- 砍伐:
- 铲土:
- 挥舞:
组件数据
- 基础: ID、名字,各种基础数据
- 伤害: 伤害数值
- 破坏:
- 砍伐: 继承破坏,只能破坏木质品
- 铲土: 继承破坏,只能破坏土、砂砾之类的
- 挥舞: 范围伤害
代码展示
构造、get、set、标记类略
模版
Model:标记接口,啥也没有,为了统一,不用强转类型(>_<)
其他的应该都能看懂吧
public class BlockModel implements Model,BasicPart,BlockPart {
protected String registryName;
protected String unlocalizedName;
protected Material material;
protected MapColor mapColor;
protected final Block block;
@Override
public BasicPojo basic() {
return new BasicPojo(registryName,unlocalizedName);
}
@Override
public BlockPojo block() {
return new BlockPojo(material,mapColor);
}
组件
略,就一个方法,上面说过
组件数据
public class BlockPojo implements Pojo {
private Material material;
private MapColor mapColor;
public BlockPojo(Material material, MapColor mapColor) {
this.material = material;
this.mapColor = mapColor;
}
联系我
对此模式有更好的想法?
想一起编写模组?
来吧!
企鹅号:319983231