只有静态功能的立面图案是不必要的层吗

本文关键字:不必要 静态 功能 | 更新日期: 2023-09-27 18:25:09

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

我目前已经围绕这个单例创建了一个C#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;
    }
}

只有静态功能的立面图案是不必要的层吗

不,这里的静态方法没有任何问题。你不需要一个对象,你只是试图隐藏你想要的实现。如果你打算不止一次地利用这个方法,那么就不用管它了,你每次都会节省8-10行代码,使它更加稳定和可维护。

如果你不打算重用它,那么就把方法的主体放在你需要的地方