小编Dom*_*nik的帖子

如何表示具有相同行为的不同实体?

我的域模型中有几个不同的实体(动物物种,比方说),每个实体都有一些属性.实体是只读的(它们在应用程序生命周期内不会改变状态)并且它们具有相同的行为(仅由属性值不同).

如何在代码中实现这样的实体?

不成功的尝试:

枚举

我尝试了这样的枚举:

enum Animals {
    Frog,
    Duck,
    Otter,
    Fish  
}
Run Code Online (Sandbox Code Playgroud)

其他代码片段将打开枚举.然而,这导致丑陋的切换代码,分散逻辑和组合框的问题.列出所有可能的动物没有很好的方法.序列化虽然很好.

子类

我还想过每个动物类型在哪里是公共基础抽象类的子类.但是,对于所有动物来说,Swim()的实现是相同的,因此它没有多大意义,可串行化现在是一个大问题.由于我们代表一种动物类型(种类,如果你愿意),每个应用程序应该有一个子类的实例,当我们使用序列化时,这很难维护.

public abstract class AnimalBase {
    string Name { get; set; } // user-readable
    double Weight { get; set; }
    Habitat Habitat { get; set; }
    public void Swim(); { /* swim implementation; the same for all animals but depends                  uses the value of Weight */ }
}

public class Otter: AnimalBase{
    public Otter() {
        Name = …
Run Code Online (Sandbox Code Playgroud)

c#

7
推荐指数
1
解决办法
266
查看次数

标签 统计

c# ×1