• 検索結果がありません。

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

の初期化を行わない等、インスタ ンスの生成を遅らせる工夫が必要

関連したドキュメント