Java + swt で 簡単なSQLエディターデスクトップアプリケーションを作成しています。
ライブラリとしてGuice,EventBusを利用しています。
編集対象を、以下のClassで表現しています。
public class Target { public TargetKey key; public HeaderProperties headerProperties; public EditOptionProperties editOptionProperties; public SqlFileProperties sqlFileProperties; public String memo1; public String memo2; }
Target クラスはメモリ内に保持し、また複数保持する事を考えています。
(例えばタブごとにそれぞれのTargetを編集できるように)
上記のようなモデルをView + Controlerで参照する際、モデルインスタンスはどのように管理するのでしょうか?
よくあるWebアプリケーションはメモリ内にモデルのインスタンスを保持する考え方ではなく
controlerにServiceクラスを用意して、その都度、モデルを生成しているようなイメージです。
例えばスコープ毎にGuiceのAbstractModuleを継承した自作クラスを作成していく考え方であってるのであれば、Contorolerに参照させるモデルの粒度でまた迷っています。
自分なりに2つの考え方があり、どっちに舵を切って開発していくか迷ってます。
■考え方1
view controlerはなるべく利用するモデルの範囲を限定した方が良い。
public class OptionAndMemoEditDialogControler { final EditOptionProperties editOptionProperties; final String memo1; final String memo2; @Inject public OptionAndMemoEditDialogControler( EditOptionProperties editOptionProperties, @Named("memo1") memo1, @Named("memo2")String memo2) { this.editOptionProperties = editOptionProperties; this.memo1 = memo1; this.memo2 = memo2; }
■考え方2
どういったモデルの何のプロパティを扱うのかをわかるようにする
public class OptionAndMemoEditDialogControler { final EditOptionProperties editOptionProperties; final String memo1; final String memo2; @Inject public OptionAndMemoEditDialogControler(Target target) { super(); this.editOptionProperties = target.editOptionProperties; this.memo1 = target.memo1; this.memo2 = target.memo2; } }
考え方1では、controlerのコーディング・後からの変更はし易い分、どのモデルを注入するか
のコーディングが複雑になります。
考え方2では、controlerのコーディング・後からの変更が難しくなりそうな分、どのモデルを注入するかのコーディングはし易いです。
MVPやMVC等のアーキテクチャなど勉強しているのですが、controlerクラスにどのようにモデルを割り当てていくか良くわかりません。ご教授の程よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。