0

私のアプリケーションでは、次のレベルのアプリケーション ロジックを分離しました。

  1. ユーティリティ
  2. アプリケーションの抽象化
  3. アプリケーションの抽象化のシンプルで一般的な実装 (#2)
  4. 具体的なアプリケーションの実装 (アプリケーションの最終的な目的に合わせて #3 を追加する追加の関数とクラス)
  5. 抽象 mvc アプリケーション アーキテクチャ (アプリケーションの mvc ロジックの抽象化)
  6. 具体的な mvc アプリケーション

これらのレベルの説明:

  1. ユーティリティ、ライブラリなど... (依存関係がなく、アプリケーションの具体的なクラスで使用される可能性があります)
  2. アプリケーションの抽象クラス。アプリケーションの非常に抽象的なクラスを定義します(依存関係はありません)
  3. 抽象アプリケーションの具象クラス。抽象アプリケーションの一般的な具象クラスを定義します(論理レベル #2 との依存関係があります)。
  4. 具体的な (最終的な) アプリケーションクラス。具体的なアプリケーション モデルの finally クラスを定義します (ロジック レベル #3 および #2 との依存関係があります)。
  5. アプリケーションの抽象 MVC アーキテクチャ。具体的な MVC アプリケーションの抽象化を定義します (依存関係はありません)
  6. アプリケーションの具体的な MVC アーキテクチャ: 具体的なコントローラー、ビュー、モデル。具体的なアプリケーション ワークフロー (MVC: ビューとしてのビュー、プロキシとしてのモデル、両方をリンクするコントローラー)

    • モデルはレベル #4 で動作するシンプルなプロキシです (#5 と #4 に依存)
    • コントローラーとビューは、モデルが使用するクラスを認識していません (#5 を除き、どのレベルにも依存しません)。
    • 「値オブジェクト」を使用してモデル共有データを表示 (ロジック #5 で定義)

カーズゲームのアプリケーション例:

  1. EngineUtilsなどTrackUtils_

  2. ICarITrackIEngine、などITrackFactory_IEngineFactory

  3. CarTrackSimpleEngineAdvancedEngineなどEngineFactory(#2 のインターフェイスを実装)

  4. HondaCar, FordCar, BMWCar, TorontoTrack, TokyoTrack, DushanbeTrack, KualaLumpurTrack,などTrackFactory_ SuperEngine_ExtendedEngineFactory

  5. ITrackProxy、、、、、ICarProxyなどCarVo_ TrackVo_ TrackListVo_ CarListVo_

  6. GameController、、、、など。TrackView_ CarView_ モデルによるデータ共有 <-> ビューは、、などです。CarProxyTrackProxyCarVoTrackVoTrackListVoCarListVo

このレベルについてどう思いますか?それでよろしければ、プロジェクト内のすべてのレベルを分離する方法を考えていますか? (名前空間またはライブラリによる)。名前空間の場合、この名前空間の名前付けに問題があります...

4

1 に答える 1

1

これは、私が現在プロジェクトを管理する方法と非常によく似ています (任意のプラットフォーム/言語で)。

私はユーティリティを別のプロジェクト/ライブラリに配置し、com.yourdomain.Core などのユニバーサル名前空間を与える傾向があります。このライブラリは、Cars Games 以外のアプリケーションでも使用できるように作成されます。

#2 (抽象) と #3 (共通具象) を抽象アプリケーション ライブラリ (#5) と同じフォルダー/パッケージ/名前空間/プロジェクトに配置できると思います。Cars Games 以外のプロジェクトでは、アブストラクトと共通の具象への参照が必要になることはないと考えているので、それらをアブストラクト アプリケーション ライブラリに入れることもできます。それ以外の場合は、#2 と #3 を 1 つのライブラリにまとめて、抽象アプリケーション ライブラリから参照できます。

具体的なアプリケーションでは、特定のクラス (#4) を作成し、ユーティリティと抽象アプリケーション ライブラリ (抽象 (インターフェイスを含む) と共通の具象を含む) を参照します。

于 2012-12-03T15:22:57.833 に答える