UMLを書いて設計を見直す – Javaでデスクトップトップアプリ(予定&ToDo管理)を作る-009
設計に関する問題を考える
前回、Boxクラスを設計しましたが、
このBoxクラスのsearchメソッドには問題があります。
例えば、Taskに繰り返し機能を追加しようとrepeatというフィールドを追加しようとすると、
Taskクラスだけでなく、Boxクラスのsearchメソッドも変更しなければいけません。
このように、1つの変更が複数のクラスに及んでしまう設計は柔軟な設計とは言えないでしょう。
また、それぞれのプロパティを比較する際のnullチェックやdateを比較する際のif文も汚いです。
そもそも、比較しないフィールドを渡すのがナンセンスです。
今回から複数回を割いて、この設計を見直していきたいと思います。
UMLを使って設計を見直す。
設計を見直すためにUMLを書いて、クラスの関係の整理を行っていきたいと思います。
getterやsetterメソッドは省略しています。
タスクを検索するときは、カテゴリー・コンテキスト等で検索しますが、タスク名やタスクの説明で検索することはありません。
検索で使用するフィールドを集めてTaskPropertyクラスを作成します。
UMLを整理すると
このTaskPropertyクラスにmatchメソッドを実装し、各フィールドの比較をTaskPropertyに任せます。
このようにすることでTaskPropertyに新たなフィールドを追加しても、
TaskPropertyのmatchメソッドを変更するだけで済み、他のクラスに影響を及ぼしません。
それでは次回、TaskPropertyを実際に書いていきます。
アプリ開発記の次の記事はこちら => 検索機能を書きなおして柔軟な設計に – Javaでデスクトップトップアプリ(予定&ToDo管理)を作る-010