4

我目前正在使用IKVM来访问 C# .Net 项目中的大型 Java 库。库入口点是一个单例,从那里我可以创建对象并设置对象属性。

我目前已经围绕这个单例创建了一个 C# Facade Pattern,并通过这个 Facade 进行对象创建和参数传递。Facade 中的功能都是静态的。Facade Pattern 只包含静态函数是正常的,还是我刚刚创建了一个价值很小的额外层?

原始 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 回答