設計。

クラス設計を考えていたらなんか見たことある感じのになって、
よく見たらFactoryMethodだったというよくある話。
でも、残念なことに研修で抽象クラスもインタフェースもやってないから、
この設計のまま実装に行くと確実にコケる。
私がコーディングしてもいいんだけどねぇ・・・。


今日はずっとそのクラス設計でウンウン言ってた。
検索機能の実装なんだけど、DBとCVSファイルのどちらかからデータを検索するのね。
だから、AbstractSearcherって抽象クラスを定義して、
引数1つのsearchメソッド(単キーワード検索)と引数2個のsearchメソッド(AND検索)を抽象メソッドで宣言。
その下にSearchByDBとSearchByCVSっていうクラスを作って、searchメソッドを定義するっていう設計になってる。
そもそもこれってFactoryMethodで合ってるよな。
まぁ、ここまではいいんだけど、悩んでるのは完全一致と部分一致をどうしようかなぁという。
今の要求では完全一致しかないんだけど、将来的に部分一致検索もできるように変更されるかもしれないとのこと。
それを考えるとできるだけ柔軟な設計にしたいんだけど、ベストな案が思い浮かばない。
もう組み込んでしまっていいかな・・・。


だいたい一致条件なんて完全一致か部分一致しかないんだから、わざわざ分ける必要もないような気がしてきたなぁ。