重写Java类以清理和测试代码

时间:2015-03-09 08:18:29

标签: java oop polymorphism refactoring

所以我有一个看起来像这样的Java类:

class CalendarEntry {

    private char type;

    private char status;

    ...


    public void myMethod() {
        switch (type) {
            ...
        }
    }

    public String myOtherMethod() {
        switch (status) {
            ...
        }
    }

    // and so on

}

类型和状态是两个不同的属性/标志。两者都可以有超过3种不同的条件设置。

如果我只有这些“标志”之一,我可以轻松地使用多态重构代码并删除所有swtich情况以及if else阻止真正使代码变得一团糟的问题。

但是现在我有两个完全不同的标志来自> = 3x3不同的条件。重构这种代码的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果您有真实的状态和类型,那么您可以应用下一个逻辑。类主要是类型的反射,具有一些取决于类型的行为和属性。 (例如AnimalCat extends AnimalDog extends Animal)。状态会说明该类型,例如Status.AWAKEStatus.SLEEPING。状态不会改变类的类型,而是改变它的一些行为。

所以: type是多态性的优秀候选者(如果它真的表示一种类型)

status应该是一个存在于所有子类中的枚举/其他类。状态没有说明正在谈论的事情。

每个子类都可以实现自己的myOtherMethod,或者,如果基于状态的方法始终相同,则在超类中实现它。

另一方面,如果typestatus(及其行为)没有任何共同点,那么它们应该是单独的类,彼此之间没有任何关系。但从问题中推断我认为它们在某种程度上是相关的。