Employeeクラスがあり
string Nameプロパティと
date? Birthdayプロパティがあるとします。
表彰状を印刷するためのクラス(ボウリング大会表彰状クラス、マラソン部表彰状クラスなど)では
Employeeオブジェクトを
Nameプロパティに+"殿"
Birthdayから年齢を算出して+"歳"(null値の場合は、"??歳")
にして使う
公的文書印刷クラスでは
Nameプロパティはそのまま
Birthdayは、和暦表示(null値の場合は空白)
にして使う
このような場合は、印刷クラスとEmployeeクラスの間に中間的な処理が必要になると思いますが、
この場合の中間的な処理には何を使ったらいいでしょうか?
自分が思いついたのは
・継承
・コンポジション(Employeeオブジェクトを保持するプロパティを持つクラスを作成し、
必要な分だけReadonlyなNameForPrintingsといったプロパティを作成する)
・名前空間を分けた拡張メソッドを作成し、印刷クラスでは名前空間のインポートを変える
継承は、はじめ安易に思いついたのですが、ダウンキャストになるのでそもそも不適切
コンポジションは、Employeeがたくさんのプロパティを持ち大半が処理をする必要がない
(stringでそのまま出力をするプロパティが大半な)場合、付け足す処理はほんの一部なのに、
いちいちプロパティを作り直すのが面倒
拡張メソッドは、いいアイデアだと思ったのですが、あまり例を見ない気がします
皆様ならどのように中間的な処理を行うクラスなどを作成しますでしょうか?
現在、独学に近い状態で設計からコーディングまでしなければならない状況にあります。
リーダブル・コードや、Code Complete、デザインパターンに関する本などを読んでみましたが、
実務では、どう適用していいかわからず議論の相手もいない状態で一人でいつも悩んでいます。
(悩んだ挙句、結局時間に追われて
恥ずかしながらただ目先の要求を満たすだけの汚いコードになることもしばしば)
オススメの本や学習方法などありましたら、あわせてご回答いただければ嬉しいです。
回答3件
あなたの回答
tips
プレビュー
2016/09/13 23:45
2016/09/14 15:28