В настоящее время я использую IKVM, чтобы получить доступ к большой библиотеке Java в рамках проекта C# .Net. Точка входа в библиотеки - это одноэлементный, и оттуда я могу создавать объекты и устанавливать свойства объектов.Является ли шаблон фасада только статическими функциями ненужным слоем
В настоящее время я создал шаблон фасада C# вокруг этого синглтона и выполняю создание объекта и параметры, проходящие через этот фасад. Функции в 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;
}
}
Планируете ли вы повторно использовать метод CreateCodeWithSubCode? – Dennis
Да. Эта функция и многие другие подобные ей сильно используются повторно. – flip
imho это скорее шаблон Builder, а не шаблон фасада. И вам следует избегать статических методов как для проверки, так и потому, что он предотвращает расширение через наследование (или через интерфейсы) – jgauffin