1

一部のオブジェクトでヘルパーのようなメソッドを持つクラスを設計したいと思います。通常、そうするための最良のアプローチは何ですか。すべての関数は、これら2つのオブジェクトに作用します。

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

SomeObjandオブジェクトに作用する唯一のメソッドAnotherObjが someFunction() である場合、それらはおそらくインスタンス変数として保存する必要はありません。from someFunction() やその他の内部メソッドの状態を変更するためにそれらを使用/必要とする場合、SomeClassそれらは実際に保存する必要があると言えます。

SomeClassクラスの実装に関して、いくつかの代替案を検討できます。

于 2012-05-31T05:37:28.530 に答える
0

「ヘルパー」メソッドがどのように使用されるか、および呼び出し元のクラスが SomeObj および AnotherObj とどのように相互作用するか、またはそれらに依存するかに依存すると思います。SomeObj と AnotherObj への内部参照を使用して SomeClass のインスタンスを作成することにより、呼び出し元のクラスをそれらのクラスから切り離すことができます。これは良いことかもしれません。一方、呼び出し元のクラスが既に someObj と anotherObj への参照を持っている場合は、追加のオブジェクトを作成しても意味がなく、代わりに静的ヘルパー メソッドを使用します。

于 2012-05-31T05:37:11.533 に答える