4

現在、IKVMを使用して、C# .Net プロジェクト内の大規模な Java ライブラリにアクセスしています。ライブラリのエントリ ポイントはシングルトンであり、そこからオブジェクトを作成し、オブジェクトのプロパティを設定できます。

私は現在、このシングルトンの周りに C# Facade パターンを作成しており、この Facade を介してオブジェクトの作成とパラメーターの受け渡しを行っています。Facade 内の関数はすべて静的です。Facade パターンに静的関数のみが含まれているのは正常ですか?それとも、価値のほとんどない追加のレイヤーを作成しただけですか?

元の Java コードは次のようになります。

Code code = Singleton.Instance.CreateCode();
code.SetExtension("12345");
code.SetId("1");

SubCode subCode = Singleton.Instance.CreateSubCode();
subCode.SetRoot("6789");
subCode.SetId("2");

code.SetSubCode(subCode);

単純化された (エラー チェックなしの) C# バージョンは次のようになります。

public static FacadePattern
{
    public static Code CreateCodeWithSubCode(string extension, string codeId, string root, string subCodeId)
    {
        Code code = Singleton.Instance.CreateCode();
        code.SetExtension(extension);
        code.SetId(codeId);

        SubCode subCode = Singleton.Instance.CreateSubCode();
        subCode.SetRoot(root);
        subCode.SetId(subCodeId);

        code.SetSubCode(subCode);

        return code;
    }

    public static CreateCodeForHP(string extension, string codeId)
    {
        Code code = Singleton.Instance.CreateCode();
        code.SetExtension(extension);
        code.SetId(codeId);
        code.SetUse(com.org.vocabulary.HP);

        return code;
    }
}
4

1 に答える 1

3

いいえ、ここでは静的メソッドに問題はありません。オブジェクトは必要ありません。必要なものを取得する実装を隠そうとしているだけです。この方法を複数回利用する場合はそのままにしておくと、毎回 8 ~ 10 行のコードを節約できるため、安定性と保守性が向上します。

再利用しない場合は、メソッドの本体を必要な場所に配置してください。

于 2013-07-28T10:43:56.800 に答える