我有一点点类设计问题。我将概述我正在考虑的三种模式。类设计:公共构造函数或私有静态工厂和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方法。
干杯。