Form Logic
Dxo
Dao
Dto Entity
データを持ち運ぶ
クラス設計について クラス設計について プレゼンテーション層 プレゼンテーション層
• Form
– System.Windows.Forms.Form クラスを継承したク ラス
– Logic を呼び出し必要な処理を行う
– プレゼンテーション層とビジネスロジック層でデータ の変換が必要な場合は Dxo で変換する
– ユーザコントロールから Logic や Dxo を呼び出しても 良い
– Logic や Dxo はインターフェース経由で呼び出す
クラス設計について クラス設計について ビジネスロジック層 ビジネスロジック層
• Logic
– Logic
インターフェースとそれを実装するLogic
クラス–
処理を行う軸となるデータごとに作成する• Dxo ( Data eXchange Object )
–
プレゼンテーション層とビジネスロジック層の間でデータの 変換が必要な場合は、ここでデータの変換を行う• Logic, Dxo 共にステートレスに実装する
–
クラス変数に状態を持たないクラス設計について クラス設計について ステートレスに実装1 ステートレスに実装1
public class EmployeeLogic : IEmployeeLogic {
// プロパティの記述は省略
private int _empID;
private Employee _employee;
public void GetEmpByEmpID() {
// 社員IDを条件に社員を取得する
_employee = _employeeDao.GetByEmpID(_empID);
} }
public class EmployeeLogic : IEmployeeLogic {
public Employee GetEmpByEmpID(int empID) {
// 社員IDを条件に社員を取得する
return _employeeDao.GetByEmpID(empID);
} }
ステートレスに実装すると下のようになる
条件や結果にクラス変 数を使用している
条件は引数に、結果は 戻り値を使用している
クラス設計について クラス設計について ステートレスな実装の利点 ステートレスな実装の利点
• ステートレスな場合(状態を持たない)
– 引数に始まり、戻り値に終わるので、単体テストがシ ンプル
• ステートフルな場合(状態を持つ)
– クラスが肥大化した場合にクラス変数がどのメソッド でどのように使われているか管理が大変
•
しっかりとした技術力が必要となり複数人での管理も大変• なぜ静的クラス( static class )ではないか
– テストや共同作業での利点を考え、インターフェース
クラス設計について クラス設計について データアクセス層 データアクセス層
• Dao ( Data Access Object )
– Dao インターフェースとそれを実装する Dao クラス
(ただし S2Dao.NET を利用する場合はインター フェースのみ)
– データベースのテーブルやビュー毎に作成する
– Entity クラスとも 1 対 1 の関係
クラス設計について クラス設計について その他のクラス その他のクラス
• Entity
–
データベースのテーブルやビュー毎に作成するクラス– 1
レコード分のデータを持ち運ぶ• Dto クラス ( Data Transfer Object )
– Entity
以外のデータを持ち運ぶクラス• Interceptor
– Aspect
で処理を注入する為のクラス• Util
– Util
インターフェースとそれを実装するUtil
クラスSeasar.NET
Seasar.NETの今後 の今後
Seasar.NET
プロダクト紹介S2Container.NET
の使い方S2Dao.NET
の使い方Windowsアプリケーション作成
クラス設計について
Seasar.NETの今後
まとめ
Seasar.NET
Seasar.NETの今後 の今後
• S2Container.NET 2.0 の開発
– Seasar 2.4 ベースの新しい設計
• S2Dao.NET 1.5 の開発
– S2Pager, データセット対応
• S2Remoting.NET の Sandbox 卒業
– リモートオブジェクトを簡単に
• ドキュメントとサンプルの充実
まとめ まとめ
Seasar.NET
プロダクト紹介S2Container.NET
の使い方S2Dao.NET
の使い方Windowsアプリケーション作成
クラス設計について
Seasar.NETの今後
まとめ
まとめ まとめ
• S2Container.NET
–
実装クラスに依存せずインターフェース経由でやりとりを行え る–
変更、テスト、分業が行いやすい• S2Dao.NET
–
マッピング情報をXML
に持たないので簡単に扱えることがで き、劇的に生産性が向上する–
マッピングミスやADO.NET
のAPI
の扱いのバグが無くなり品 質が向上する• 問題点
– Windows
アプリケーションの場合は起動に時間がかかると問題なので、
S2Container
の初期化を行わない等、インスタ ンスの生成を遅らせる工夫が必要
ドキュメント内
Seasar.NETプロダクトによるWindowsアプリケーション開発
(ページ 54-65)