ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ダイコン時代の設計手法 - 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>
教祖のリクエストに応じてがんばって書いてみました。