创建实例的方法是“更好”的方法,为什么?

时间:2015-05-06 09:23:19

标签: c# design-patterns

我只是想知道这些创建实例的方法之一是否是“更好”的解决方案,如果是,那么为什么呢?

 method 1:   MyClass myClass = new MyClass();
 method 2:   MyClass myClass2 = MyClass.Create();


public class MyClass
{
    public string Name { get; set; }

    public static MyClass Create()
    {
        return new MyClass();
    }
}

亲切的问候

1 个答案:

答案 0 :(得分:0)

方法2可以更灵活,例如实施工厂方法模式

  public abstract class MyClass {
    ...
    protected MyClass() {
    }

    public static MyClass Create() {
      if (...)
        return new MyClassOne();
      else if (...)   
        return new MyClassTwo();
      ...
    } 

    public abctract void DoSomething();
  }

  ...

  MyClass my = MyClass.Create();
  // I have no need to choose which concrete class (MyClassOne, MyClassTwo etc.) 
  // will do something for me 
  my.DoSomething();