Oop 助手类的设计方法
我希望设计一个类,以便在某些对象上使用helper类的方法。通常最好的方法是什么。所有函数都将作用于这两个对象Oop 助手类的设计方法,oop,design-patterns,Oop,Design Patterns,我希望设计一个类,以便在某些对象上使用helper类的方法。通常最好的方法是什么。所有函数都将作用于这两个对象 SomeObj someObj; AnotherObj anotherObj; public SomeClass(SomeObj someObj,AnotherObj anotherObj){ this.someObj=someObj; this.anotherObj=anotherObj; } somefunction(){ //act on the instance vars
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
}
在设计方面,哪种方法被认为是好的。我认为这取决于“helper”方法的使用方式,以及调用类如何与SomeObj和另一个obj交互。通过创建一个SomeClass的实例,以及对SomeObj和AnotherObj的内部引用,可以将调用类与这些类解耦,这可能是一件好事。另一方面,如果调用类已经引用了someObj和另一个obj,我认为没有必要创建额外的对象,而是使用静态helper方法。我认为这取决于如何使用“helper”方法,以及调用类如何与someObj和另一个obj交互/依赖。通过创建一个SomeClass的实例,以及对SomeObj和AnotherObj的内部引用,可以将调用类与这些类解耦,这可能是一件好事。另一方面,如果调用类已经引用了someObj和另一个obj,那么我认为没有必要创建一个额外的对象,而是使用静态助手方法。如果将作用于
someObj
和另一个obj
对象的唯一方法是someFunction()然后,它们可能不需要存储为实例变量。如果将使用/需要它们从someFunction()和其他内部方法修改SomeClass
的状态,那么我认为它们确实应该被存储
您可以考虑一些关于<代码> SomeClass < /Cord>类实现的替代方案:
- 如果它没有任何状态,那么这些方法应该是静态的
- 根据操作的复杂程度和您将拥有的帮助器方法的数量,您可以使用
SomeObj
和另一个对象的唯一方法是someFunction(),那么它们可能不需要存储为实例变量。如果将使用/需要它们从someFunction()和其他内部方法修改SomeClass
的状态,那么我认为它们确实应该被存储
您可以考虑一些关于<代码> SomeClass < /Cord>类实现的替代方案:
- 如果它没有任何状态,那么这些方法应该是静态的
- 根据操作的复杂程度和您将拥有的帮助器方法的数量,您可以使用
Home helper类中有多少函数(somefunction)?Home helper类中有多少函数(somefunction)?