【发布时间】:2018-01-28 23:21:38
【问题描述】:
我想知道是否有一些设计模式可以帮助我解决这个问题。
假设我有一个类Person,它具有三个属性:name、nickname 和speaksEnglish,以及一个带有TypeOne、TypeTwo 和TypeThree 的枚举PersonType。
假设Person 有nickname 和speaksEnglish,它就是TypeOne。如果它有nickame 但没有speaksEnglish,则它是TypeTwo。如果没有nickame,则为TypeThree。
我的第一个想法是有一个带有一些if-else 并返回相关Enum 的方法。以后我可以在Person和其他类型的PersonType中有更多的属性来决定。
所以,我的第一个想法是用一堆if (...) { return <PersonType> } 或switch-case 创建一个方法,但我想知道是否有一些设计模式可以用来代替ifs 和switch-case。
【问题讨论】:
-
向 Enum 添加一个抽象方法怎么样,比如说方法 'boolean test(Person)',这样每个 Enum 类型都能够检查人员是否属于该类型。稍后您只需要遍历 Enum.values() 并调用 test(person)。不确定是否是最好的主意,但您会将逻辑保留在一个地方,避免所有那些 if/else
-
你的
Person对象是可变的还是不可变的?
标签: java oop design-patterns enums