Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 助手类的设计方法_Oop_Design Patterns - Fatal编程技术网

Oop 助手类的设计方法

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

我希望设计一个类,以便在某些对象上使用helper类的方法。通常最好的方法是什么。所有函数都将作用于这两个对象

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)?