1

こんにちは、次のようなクラスとFormater:IFormaterメソッドがあるとしましょう。LoadData()

public interface IFormater { void LoadData(string strSomeData); }
public class Formater : IFormater { public void LoadData(string strSomeData) {/*do some magic*/} }

次のように、というクラスとView:IViewメソッドLoadRawData()があるとします。

public interface IView { void LoadRawData(string strSomeData); }
public class View : IView {
    private IFormater _formater;
    public View(IFormater formater) { _formater = formater; }
    public void LoadRawData(string strSomeData) { _formater.LoadData(strSomeData); }
}

さて、私のプログラムでは、Viewクラスのオブジェクトを作成しLoadRawData()、次のように呼び出します。

static void Main(string[] args) {
    kernel = new StandardKernel(new Modules()); //ninject
    formater = kernel.Get<IFormater>(); //ninject
    IView view = new View(formater);
    view.LoadRawData(args[0]);
}

私はDIメカニズムとしてninjectを使用していますが、実際にはすべて正常に動作しています。

質問:

  1. 内部IViewで呼び出すインターフェースを持つことは正しいですか?Formater::LoadDtata()(私自身、他に方法はありません)。

  2. Formater::LoadData()とに異なる名前を付けるView::LoadRawData()必要がありますか、それとも同じ名前にする必要がありますか、またはそれらに名前を付ける方法があるかもしれませんか?

ごめんなさい。私はいくつかの深刻な不正確さを犯したようです。上記を修正しました。実はMVCパターンは使っていません。そう思っただけです。

ポイントは、表示ロジックを解析およびフォーマットから分離したいということです。

私のコンソール アプリは、ファイルを開き、テキストの内容を読み取り、それをフォーマッター クラスに渡す必要があります。これにより、何らかの書式設定が行われ、元に戻されます (ただし、そのフォーマッターがそれをパーサーに渡して生のテキストから必要な内容を抽出する前に)、この ビューのように<-> フォーマッタ <-> パーサ

これは単純なプログラムであり、TDD、単体テスト、DI などのいくつかの最良の方法論と実践をよりよく理解するために使用します。

以前の矛盾で申し訳ありません。

4

1 に答える 1