加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 这个问题的良好代码架构?

发布时间:2020-12-15 04:05:38 所属栏目:百科 来源:网络整理
导读:我正在开发一个可定制船只的太空射击游戏.您可以通过一对雷达图表*增加船舶任意数量的物体的强度.在内部,我将每个船舶表示为子类SpaceObject类,该类包含描述该船的各种属性的ShipInfo. 我想开发一个相对简单的API,它允许我为所有船舶属性(其中一些是基础实际
我正在开发一个可定制船只的太空射击游戏.您可以通过一对雷达图表*增加船舶任意数量的物体的强度.在内部,我将每个船舶表示为子类SpaceObject类,该类包含描述该船的各种属性的ShipInfo.

我想开发一个相对简单的API,它允许我为所有船舶属性(其中一些是基础实际属性集的简化)提供相对强度的块(从雷达图允许的最小值到最大值).并获得一个ShipInfo类,我可以给一个PlayerShip类(即实例化为玩家船的对象).

我可以自己开发代码来进行简化和实际属性之间的转换,但是我想提供一些建议来提供哪种架构来最小化与这个转换器代码交互的痛苦(即没有带有5个参数的方法或其他一些其他方法废话).有没有人有任何想法?

* =尚未实际实施,但这是计划.

解决方法

那么Builder模式呢?您可以在ShipInfo类上使用静态FillDefaults方法,然后通过实例方法分配ShipInfo的每个属性,该方法返回您正在使用的实例,如下所示:
ShipInfo.FillDefaults().CalculateSomething(50).AssignName("Testing...").RelativeFiringPower(10).ApplyTo(myShip);

在ShipInfo中,这看起来像:

public static ShipInfo FillDefaults()
{
    ShipInfo newInstance = ...;
    // Do some default setup here
    return newInstance;
}

public ShipInfo CalculateSomething(int basis)
{
    // Do some calculation
    // Assign some values internally
    return this;
}

// Keep following this pattern of methods
public void ApplyTo(SpaceObject obj)
{
    // Some checks here if you want
    obj.ShipInfo = this;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读