ダイコン時代の設計手法 - PetStore(1)
http://www.javagen.com/petstore/
を例に考えてみます。
私は正直言うと
http://examples.macromedia.com/petmarket/store.htmlのほうしか
しらないので細かいところは若干異なるかも。
最初は、「カテゴリを表示する」です。
5つの動物がカテゴリです。
最初にロバストネス分析を行います。
カテゴリを取得する(C) -> カテゴリ(E)
∟初期ページ(B)
初期ページ(B)は状態として、カテゴリ(E)のリストを持ちます。
カテゴリ(E)はcategoryoid, categorydisplayname, categoryname, color
で構成されます。
次は、カテゴリを取得する(C)を各クラスにマッピングします。
- GetCategoriesAction(UI層のコントローラ)
- CatalogService#getCategories()(サービス層)
- CatalogyDao#getCategories()(永続化層)
カテゴリを取得する、プロダクトを取得する、アイテムを取得するという
ユーザ機能で提供されるサービスをCatalogServiceにまとめています。
永続化層はエンティティ(この例ではCatetory)ごとに作成します。
GetCategoriesActionはCatalogServiceをプロパティに持ち、
CatalogServiceはCatalogyDaoをプロパティに持ちます。
コンポーネントの定義は次のような感じ。
教祖のリクエストに応じてがんばって書いてみました。
<component class="GetCategoriesAction"/>
<component class="CatalogServiceImpl"/>
<component class="CategoryDaoImpl">
<aspect>
<component class="...S2DaoInterceptor"/>
</aspect>
</component>