我目前正在使用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;
}
}
答案 0 :(得分:3)
不,这里的静态方法没有任何问题。你不需要一个对象,你只是想隐藏实现你想要的东西。如果您不止一次地利用这种方法,那么保留它,每次使用它可以节省8到10行代码,使其更加稳定和可维护。
如果您不打算重复使用它,那么只需将方法的主体放在您需要的位置即可。