我有一點點類設計問題。我將概述我正在考慮的三種模式。類設計:公共構造函數或私有靜態工廠和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方法。
乾杯。