2015-05-06 3 views
1

Мне просто интересно, является ли один из этих методов создания экземпляра «лучшим» решением, если да, то почему?Какой метод создания экземпляра является «лучшим» методом и почему?

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

Там нет никакой разницы между этими двумя методами в вашем случае. –

+1

Бывают случаи, когда один способ лучше, а времена, когда другой способ лучше. Разделение между двумя подходами, в лучшем случае, субъективно. Когда нет выбора, метод 2 позволяет конструкторам быть деталями реализации (иногда это чище). Обычно я использовал бы конструктор, если бы у меня не было веских оснований идти со вспомогательным методом. – Richard

+2

@RahulTripathi - в этом случае нет никакой разницы, но метод 'Create' мог бы, как правило, иметь больше логики для возврата типа, полученного из' MyClass' или даже 'null', который конструктор не может вернуть. –

ответ

0

Метод 2 может быть более гибким , например, при реализации Factory Method модель

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(); 
+0

Спасибо за ответ :) Я возьму его на борт. – adminSoftDK

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