0
メソッドの実装をテストするためにナイーブとハードがこのこれはパターンですか?
public void getFromDatabaseComputeAndStore(SomeType param) {
Collection<Something> s = dao.retrieveSomethingFromDatabase(param);
Collection<Other> o = dao.retrieveOtherFromDatabase(param);
Result r = null;
<do massive computation, call other methods, figure out what r should be>
<based on s and o>
dao.store(r);
}
のようになります。通常、私は
Computer
クラスが鍵となり
public void getFromDatabaseComputeAndStore(SomeType param) {
Computer computer = new Computer();
Collection<Something> s = dao.retrieveFromDatabase(param);
Collection<Other> o = dao.retrieveOtherFromDatabase(param);
computer.setSomething(s);
computer.setOther(o);
computer.execute();
Result r = computer.getResult();
dao.store(r);
}
のようなものにこれをリファクタリングと思います。このクラスはデータベースや他の外部システムとやりとりすることはなく、副作用はありません。例えば純粋に機能的です。同じsomethings
とothers
を指定すると、result
は常に同じになります。
だから私の質問は以下のとおりです。
- が、これは私が見てきた
Computer
の機能を持つクラスの一般的な名前になり何名
Strategy
、Mediator
、およびCommand
パターンであるが、私はそれらが完全に適合しているとは思わない。
なぜ2つの引数を取る方法がないのですか?特に、複数のスレッドを使用していないか、いくつかの新しいコードの他に他の利点がありません。 –
[Master/Workerパターン](http://stackoverflow.com/a/8573733/829571)のように見えます。 http://blog.gigaspaces.com/2009/08/24/the-master-worker-pattern/も参照してください。 – assylias
私が示したように、結果を計算するのに必要な計算量が非常に大きくなる可能性があり、それを分離したいかもしれないからです。 – slipset