1

我希望设计一个类以在某些对象上具有辅助方法。通常最好的方法是什么。所有功能都将作用于这两个对象。

SomeObj someObj;
AnotherObj anotherObj;

public SomeClass(SomeObj someObj,AnotherObj anotherObj){
this.someObj=someObj;
this.anotherObj=anotherObj;
}

somefunction(){
//act on the instance vars
}

或者我应该有没有实例变量(无状态)的简单类并使函数接受所需的变量

public SomeClass(){

}

somefunction(SomeObj someObj,AnotherObj anotherObj){
//act on the local vars
}

就设计而言,哪种方法被认为是好的。

4

2 回答 2

1

如果对SomeObjandAnotherObj对象起作用的唯一方法是 someFunction() 那么它们可能不需要存储为实例变量。如果它们将被使用/需要修改SomeClassfrom someFunction() 和其他内部方法的状态,那么我会说它们确实应该被存储。

您可以考虑一些关于SomeClass类实现的替代方案:

  • 如果它没有任何状态,那么方法应该是静态的
  • 根据操作的复杂程度以及您将拥有多少辅助方法,您可以使用访问者设计模式
于 2012-05-31T05:37:28.530 回答
0

我想说这取决于如何使用“帮助器”方法,以及调用类如何与 SomeObj 和 AnotherObj 交互/依赖。通过创建 SomeClass 的实例,以及对 SomeObj 和 AnotherObj 的内部引用,您可以将调用类与这些类分离,这可能是一件好事。另一方面,如果调用类已经具有对 someObj 和 anotherObj 的引用,我认为创建额外的对象没有意义,而我会使用静态辅助方法。

于 2012-05-31T05:37:11.533 回答