2013-07-28 3 views
4

В настоящее время я использую 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; 
    } 
} 
+0

Планируете ли вы повторно использовать метод CreateCodeWithSubCode? – Dennis

+0

Да. Эта функция и многие другие подобные ей сильно используются повторно. – flip

+0

imho это скорее шаблон Builder, а не шаблон фасада. И вам следует избегать статических методов как для проверки, так и потому, что он предотвращает расширение через наследование (или через интерфейсы) – jgauffin

ответ

3

Нет, нет ничего плохого со статическим методов здесь. Вам не нужен объект, вы просто пытаетесь скрыть реализацию получения того, что хотите. Если вы собираетесь использовать этот метод более одного раза, оставьте его, вы сэкономите 8 - 10 строк кода каждый раз, делая его более стабильным и поддерживаемым.

Если вы не собираетесь его повторно использовать, просто установите тело метода там, где оно вам нужно.