专门的方法与使用Enum作为附加参数

时间:2012-01-16 15:23:24

标签: java api

Java设计问题。

我有一个对象需要维护4种类型的小部件:活动,非活动,无效,潜在。对于这些类型中的每一种,我都有一系列作用于每种类型的方法:比如添加,获取,删除等。

我的问题是,如果有一系列这样的方法会更好:

addInactive(Widget)
getInactive()
removeInactive(Widget)
addActive(Widget)
getInactive()
removeInactive(Widget)
addInvalid(Widget)

等...

OR

我是否应该在此类中使用枚举:WidgetStatus然后当需要执行操作时,使用者将传入此枚举。这将导致只有3种公共方法:

add(Widget, WidgetStatus)
get(WidgetStatus)
remove(Widget, WidgetStatus)

一方面,我喜欢第一种使用专门方法的方法,因为它不仅可以减少所需参数的数量,还可以强制消费者的手显式调用他们需要的方法。但是,后一种选择似乎使API保持简单,并使将来添加其他状态类型更容易一些。

思想?

3 个答案:

答案 0 :(得分:1)

WidgetStatus 是小部件的属性,而不是容器。可能会对你有好处

Widget.setActive(false);
add(Widget);

答案 1 :(得分:1)

如果要更改状态,使用枚举可以获得更清晰的API并且更容易维护;第一种方法确实没有充分的理由。

答案 2 :(得分:0)

我会将枚举或其他内容转换为包含您在上面提到的行为的策略模式。然后,您的add / get / remove方法将简单地委托给策略来执行操作。

http://en.wikipedia.org/wiki/Strategy_pattern