首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时子类以及何时在对象模型中使用属性

何时子类以及何时在对象模型中使用属性
EN

Stack Overflow用户
提问于 2013-01-04 21:19:31
回答 3查看 917关注 0票数 1

我正在为一个评估工具寻找一个对象模型的一些指导。目前有两种类型的评价

  • 同级
  • 团队

这两个评估之间唯一的区别是表单在UI中呈现给用户的方式。同行评估将向团队中的同行表明,您应该根据某些标准进行评估,而团队评估将显示所有涉及到的团队都将根据某些标准进行评估。除此之外,这两项评价完全相同。

在建立对象模型时,我是否应该创建一个抽象的评估对象,然后将其子类为Peer评估和团队评估?或者我应该创建一个评估对象,并有两个属性来表示两种不同类型的评估?

今后可能会增加更多类型的评价。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-04 21:29:29

通常,如果类型只是一段信息,那么您可以将其作为一个字段。如果它用于更改方法的行为,如

代码语言:javascript
复制
public void foo() {
    if (type == PEER) {
        doSomething();
    }
    else {
        doSomethingElse();
    }
}

然后,它指示您应该使用子类,并根据类型使用多态性来获得适当的行为。另一种解决方案是使用委托而不是继承,并将行为与类型关联起来:

代码语言:javascript
复制
public enum EvaluationType {
    PEER {
        @Override
        public void foo() {
            ...
        }
    },
    TEAM {
        @Override
        public void foo() {
            ...
        }
    };

    public abstract void foo();
}

public class Evaluation {
    private EvaluationType type;

    public void foo() {
        return this.type.foo();
    }
}
票数 4
EN

Stack Overflow用户

发布于 2013-01-04 21:29:48

仔细想想,在我看来,将这些信息存储在“评估”对象本身中是错误的。举个现实世界的例子--一个南瓜籽。现在,我可以种下种子,或者我可以烤和吃种子。事实上,对于一种特定的种子,我可以走这条路,也可以走另一条路,但不能两者兼而有之:有些种子被留出来供吃,另一些留出来供播种,但这种划分与种子本身没有多大关系。

因此,我建议在别的地方编码.也许您有一个EvaluationModel,它维护单独的集合(team ),并酌情将它们转发给UI。为什么评估应该关心别人如何使用它呢?你需要的是一个实体,它的工作是关心,让他画出什么区别,他将。

票数 0
EN

Stack Overflow用户

发布于 2013-01-04 21:33:55

获取接口的通用属性和方法,比如ICommon,然后让团队和对等方实现ICommon.

代码语言:javascript
复制
interface ICommon{
}

interface ITeam:ICommon{
}

interface IPeer:ICommon{
}

然后实现每个接口( IPeer和ITeam),您的EvaluationManager (如果有)将知道何时实例化每个对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14165147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档