我有一個關於國際奧委會,工廠和開放/封閉原則的問題。國際奧委會,班級工廠,開放/關閉
考慮,如果你願意,以下工廠
public function PODocument(_type as string) as IPODocument
dim d as new PODocument
if _type = "service" then
d.header = new ServicePOHeader()
d.details = new ServicePOLineItems()
else if _type = "merchandise" then
d.header = new MerchandisePOHeader()
d.details = new MerchandisePOLineItems()
end if
return d
end function
這是爲我工作,我可以很好地具有約異類收藏網頁顯示的信息。
我的挑戰是,今天有人告訴我有時某個客戶會一起訂購服務和商品。來吧,我們中間誰能看到那個來?
因此,我編寫了一套新的提供程序來處理增加的複雜性,更改了工廠以包括新類型的案例,我退出並運行。
但是,我違反了開放/關閉的原則,通過更改工廠,它已發佈到生產。 有沒有辦法設置這個,以免我經常更換工廠?
在此先感謝。
你不應該擔心這些,這些原則並不意味着遵循教條,你的設計很好。 – 2013-05-06 04:00:01