模版组件设计模式

目录

声明

模块

实例

   题目

  模版

  组件

  组件数据

代码展示

  模版

  组件

  组件数据

联系我


声明

此设计模式是本人原创,可能会有缺陷不足,而且更适用于属性冗余的类使用,比如 游戏。

比如Minecraft,本人也是在编写Minecraft 模组的时候想的此模式。

因为要写Minecraft 模组,离不开注册ID、本地化ID和各种属性,初始化比较复杂、冗余。

玩过Minecraft 匠魂模组的话,应该会比较容易理解,因为此设计模式的思路就是来自匠魂模组的工具制作。

模块

模版 : 类 | 要什么功能就实现什么组件,可以继承模版。

组件: 接口 | 只有一个方法,就是获取该组件对应的组件数据。

组件数据: 类 | 存储组件的数据,属于实体类。

实例

   题目

武器:剑,斧头,铲子

  模版

  1. 基础工具:       实现:基础组件
  2. 剑:                  继承:基础工具,实现:伤害,挥舞
  3. 斧头:              继承:基础工具,实现:伤害,砍伐
  4. 铲子:              继承:基础工具,实现:伤害,铲土

  组件

  以下皆只有一个方法:get相应数据,比如 BasicPojo getBasic();----基础组件

  1. 基础:
  2. 伤害:
  3. 破坏: 
    1. 砍伐:
    2. 铲土:
  4. 挥舞:

  组件数据

  1. 基础:                   ID、名字,各种基础数据
  2. 伤害:                   伤害数值
  3. 破坏: 
    1. 砍伐:          继承破坏,只能破坏木质品
    2. 铲土:          继承破坏,只能破坏土、砂砾之类的
  4. 挥舞:                   范围伤害

代码展示

构造、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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值