UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Architecture】Naked Object Pattern とは?

Naked Object Pattern というアーキテクチャパターンを聞いたので調べてみた

wikipediaより

en.wikipedia.org

次の3つの原則によって定義される

  1. すべてのビジネスロジックは、ドメインオブジェクトにカプセル化する
  2. ユーザーインターフェイスは、ドメインオブジェクトの直接表現である必要がある
    すべてのユーザーアクションは、ドメインオブジェクトのメソッドの作成、取得、または呼び出しで構成される
  3. ユーザーインターフェイスは、ドメインオブジェクトの定義から完全に自動的に作成される
    これは、リフレクションまたはソースコード生成を使用して実行できる

ドメインオブジェクトを第一級市民として扱い、他にそれを微調整するだけのクラスがあるようなアーキテクチャパターン?とざっくり理解した

それはUIも含まれるためOOUIの話に繋がるみたい

オブジェクト指向ユーザーインターフェイス(OOUI)はオブジェクトごとに1つのUIページを用意してユーザーの目的を達成するというもの

uga-box.hatenablog.com

特徴

  1. 開発するレイヤーが少ないため、開発サイクルが速くなる 従来の設計では、開発者は3つ以上の個別のレイヤー(ドメインオブジェクトレイヤー、プレゼンテーションレイヤー、および2つを接続するタスクまたはプロセススクリプト)を定義して実装する必要がある
  2. 俊敏性の向上
    維持する必要があるレイヤーの数が少ないため、ビジネス要件の将来の変更に対応するためにアプリケーションを簡単に変更できる
    ただし、ユーザープレゼンテーションとドメインモデルの間に強制的に1:1で対応することで、より高品質のオブジェクトモデリングが強制され、敏捷性が向上するという主張もある
  3. より強力なスタイルのユーザーインターフェイス
    結果として得られるオブジェクト指向ユーザーインターフェイス(OOUI)に起因するが、OOUIの構想と実装がはるかに簡単になるという議論がある
    Naked Object Pattern では、ドメインオブジェクトがユーザーと開発者の間で共通の言語を形成し、この共通の言語が要件を議論するプロセスを容易にする
    より高速な開発サイクルと組み合わせることで、機能的なアプリケーションのプロトタイプをリアルタイムで作成することが可能になる

ただし、ユーザーがトランザクションを完了するためにさまざまなモデルを操作する必要がある場合は、うまく機能しない可能性がある   さらに、オブジェクトごとのUIページは、オブジェクトの数は増え続ける場合は管理できなくなる

ざっくりそういうアーキテクチャパターンがあることがわかった

他参考

https://vinayak-gadkari.github.io/naked-objects-really-naked.html