2007年07月11日
必要な情報は親から貰うんじゃなくて子供から貰え
このタイトルは何を言いたいのかというと、
ある処理をするのに必要な情報は、それを呼び出す親プログラムから引数などで渡してもらう、ってのが普通のやり方だと思います。
でも、発想を逆転してあげることで、とても設計がすっきるとする場合があります。
引数で渡して貰うんじゃなくて、サブクラスから情報を貰うようにするわけです。
要は、Template Method を上手く活用するってこと。
特に、受け取りたいデータが沢山ある場合は、引数で受け渡すことにすると、呼び出す側の負担が増えるし、コードも読みにくくなります。
virtualなメソッドを定義し、必要な情報をサブクラスから貰うようにすれば、呼び出す側のコードがすっきりするし、責任範囲が明確になります。
もっとも、どんな場合でも使えるっていうわけじゃないけどね。
ある処理をするのに必要な情報は、それを呼び出す親プログラムから引数などで渡してもらう、ってのが普通のやり方だと思います。
でも、発想を逆転してあげることで、とても設計がすっきるとする場合があります。
引数で渡して貰うんじゃなくて、サブクラスから情報を貰うようにするわけです。
要は、Template Method を上手く活用するってこと。
特に、受け取りたいデータが沢山ある場合は、引数で受け渡すことにすると、呼び出す側の負担が増えるし、コードも読みにくくなります。
virtualなメソッドを定義し、必要な情報をサブクラスから貰うようにすれば、呼び出す側のコードがすっきりするし、責任範囲が明確になります。
もっとも、どんな場合でも使えるっていうわけじゃないけどね。



