動詞はメソッド、名詞はクラスまたは属性とした場合、こまることがある。
メソッドはどこかのクラスに入れないといけないけど、いくつかのクラスにまたがるものがある場合、どこにいれていいか。。。とか、あるクラスに大量のメソッドが所属し、開発できないとか・・・
DDDなどでは、前者のいくつかのクラスにまたがる振る舞いをサービスとしているが、
そうしても、じゃあ、サービスって、どう実装するの?ということになる。
こういうときのテクニック。
動詞を名詞化させる。
実験する =実験、
歩く =歩行
ためしにやる=試行
のように、動詞は名詞にすることができる。
同様に、メソッドを名詞にできる。
そもそも、オブジェクトが事物(ものと出来事)だとすると、その抽象化したクラスも物または出来事を表す。振る舞いしてることを出来事ととらえれば、メソッドがクラスとなっても不思議ではない。
実装上は、
public void myfunc(String arg1,int arg2)
のような場合、
public class myfunc { String arg1; int arg2; void execute() { // 処理内容を書く } }というかんじ。setter,getterもかいたほうがいいかも。 つまり、 メソッド名=クラス名、 引数=フィールド とし、クラスの中にメソッドをつくって、そこにもとのメソッドの処理内容を書く。 もっとも、コンストラクタに書いてもいいけど。。。 こうすると、メソッドをクラスにできる。
これが、生きてくる場面については、またこんど