2014-01-10 9 views
1

У меня есть несколько классов, что все реализации интерфейса:как назвать класс, который генерирует другие классы?

interface ISample 
    { 
    } 

    class A:ISample 
    { 
    } 
    class B:ISample 
    { 
    } 
    class C:ISample 
    { 
    } 

и другого класса, которые создают их на основе какой-то ситуации, например:

class CreateISample 
    { 
     ISample Create(string situation) 
     { 
      switch(situation) 
      { 
       case "create A": 
        return new A(); 
       case "Create B": 
        return new B(); 
       case "Create C": 
        return new C(); 
       } 
     } 
    } 

Что такое лучшее название для этого класса?

Создать ISample не хорошо, как тогда у меня есть:

CreateISample.Create("Create A"); 

, который имеет два Создать как часть имени. Также CreateISample может делать некоторые другие вещи (например, удерживать некоторые постоянные значения, относящиеся ко всем экземплярам, ​​или содержать список созданных экземпляров и т. Д.). Тогда CreateISample не является хорошим именем.

Есть ли какой-либо стандарт для этого? Я помню, что я прочитал книгу о шаблонах дизайна, и они предложили подходящее имя для этой фабричной схемы.

+8

Как насчет того, чтобы называть его SampleFactory и вопрос о переносе на http://codereview.stackexchange.com или http://programmers.stackexchange.com? –

+1

Я бы назвал это Bob (tgif :)) –

+0

Как насчет 'GenerateISample'? – Sean

ответ

5

вы описываете шаблон фабрики http://en.wikipedia.org/wiki/Factory_method_pattern

обычно конвенции мы используем SampleFactory

Но не overthink его. Это очень сложно сделать такие имена из образцов. например, для большинства людей очевидно, что квадрат наследуется от формы. так что

ShapeFactory.Create("Square"); 

будет иметь большой смысл. так что посмотрите на свою проблему, чтобы увидеть, что такое ISample на самом деле. Если я имею смысл с точки зрения бизнеса/проблемы, другие программисты, которые понимают проблему, могут понять это.

+0

По сути, это хорошая идея использовать Factory. Должен ли он быть статическим классом или нормальным классом? – mans

Смежные вопросы