关于C#:如何命名生成其他类的类?

how to name a class that generate other classes?

我有几个类都实现了一个接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
  interface ISample
  {
  }

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

以及另一个基于某些情况创建它们的类,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  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不好,因为我有:

1
   CreateISample.Create("Create A");

它有两个create作为name的一部分。此外,createisample还可以执行其他一些操作(例如,保存与所有实例相关的一些常量值,或者保存已创建实例的列表等)。那么createisample不是一个好名字。

这个有什么标准吗?我记得我读过一本关于设计模式的书,他们给这个工厂模式起了一个合适的名字。


您正在描述工厂模式http://en.wikipedia.org/wiki/factory_method_pattern

通常我们使用的惯例是样品工厂

但不要想得太多。从样本中很难做出这样的名字。例如,对大多数人来说,一个正方形从形状上是显而易见的。所以

1
 ShapeFactory.Create("Square");

会很有意义的。所以看看你的问题,看看到底是什么样的事情。如果从业务/问题的角度来看我是有意义的,那么其他理解问题的程序员就可以解决问题。