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保持简单,并使将来添加其他状态类型更容易一些。
思想?
答案 0 :(得分:1)
WidgetStatus 是小部件的属性,而不是容器。可能会对你有好处
Widget.setActive(false);
add(Widget);
答案 1 :(得分:1)
如果要更改状态,使用枚举可以获得更清晰的API并且更容易维护;第一种方法确实没有充分的理由。
答案 2 :(得分:0)
我会将枚举或其他内容转换为包含您在上面提到的行为的策略模式。然后,您的add / get / remove方法将简单地委托给策略来执行操作。