У меня проблема с классом. Я расскажу о трех моделях, которые я рассматриваю.Конструкция класса: открытый конструктор или закрытый со статическим заводом и COM-объектом
Пример 1:
Class MyObject
{
public MyObject(IWrapper wrapper,string name)
{//set properties.}
public Void Declare()
{
//Some COM stuff with IWrapper
}
}
Применение:
MyObject testobj = new MyObject(fakewrapper,"test");
testobj.Declare();
Пример 2:
Class MyObject
{
public MyObject(IWrapper wrapper,string name)
{ //set properties.}
public MyObject Declare()
{
//Some COM stuff with IWrapper
return this;
}
}
Использование:
MyObject testobj = new MyObject(fakewrapper,"Test");
testobj = testobj.Declare();
Пример 3: Использование частного конструктора
Class MyObject
{
private MyObject(IWrapper wrapper,string name)
{//set properties.}
public static MyObject Declare(IWrapper wrapper,string name)
{
//Some COM stuff with IWrapper
return new MyObject(wrapper,name);
}
}
Использование:
MyObject testobj = MyObject.Declare(fakewrapper,"Test");
Мои основные вопросы; Какой, по вашему мнению, лучший дизайн?
Неплохая практика скрыть конструктор в пользу статического метода фабрики?
Я также пытаюсь сделать это как можно более проверяемым. Единственная причина, по которой я не могу решить, потому что класс MyObject является оболочкой вокруг другого объекта в COM-приложении.
Проблема заключается в том, что этот объект должен быть объявлен в приложении COM, что и делает метод, прежде чем любой другой метод может быть вызван, но если я скрою конструктор, а затем добавлю больше работы в объявление метод, я думаю, что это сделает остальной класс сложным для тестирования, потому что я должен сначала пройти метод Declare.
Cheers.