上篇文章分析學習了一下外觀模式的適用情況和經典例項。今天再來看看重構時用到的另乙個設計模式——抽象工廠。
抽象工廠的作用主要就是在有一系列工廠且每個工廠都有一系列產品可以選擇的時候,把系列產品統一乙個介面,並且把具體產品與客戶端解耦合。就像我們的系統可以有許多種資料庫可選擇,我們把可能用到的資料庫都寫成工廠。 比如我們可能用到sql server
和 access
具體工廠與具體產品:
access factory 類:
using abstrctfactory;
namespace abstrctfactory
public iuser createuser()
}//end accessfactory
}//end namespace abstrctfactory
access user 類:
using abstrctfactory;
using system;
namespace abstrctfactory
public user getuser(int id)
}//end accessuser
}//end namespace abstrctfactory
using abstrctfactory;
using system;
namespace abstrctfactory
public department getdepartment(int id )
public virtual void dispose()
}//end sqlserverdepartment
}//end namespace abstrctfactory
using abstrctfactory;
namespace abstrctfactory
public iuser createuser()
}//end sqlserve***ctory
}//end namespace abstrctfactory
using abstrctfactory;
using system;
namespace abstrctfactory
public user getuser(int id )
}//end sqlserveruser
}//end namespace abstrctfactory
介面:
namespace abstrctfactory //end iuser
}//end namespace abstrctfactory
using system;
namespace abstrctfactory //end ifactory
}//end namespace abstrctfactory
namespace abstrctfactory //end idepartment
}//end namespace abstrctfactory
實體類:用來傳輸資料
namespace abstrctfactory
set
}private string _name;
public string name
set }}
}
namespace abstrctfactory
set
}private string _deptname;//宣告乙個string變數存放部門名稱
public string deptname//deptname 屬性
set }}
}
客戶端:
}} 1.我的系統不用知道你的產品如何生產的, 只要能用就行。
2.產品有許多種相似的, 但我只用乙個。(
資料庫有很多 ,但是乙個功能塊裡只是用一種
)3.所有產品以統一介面的出現, 使客戶端不依賴具體實現
1.它分離了具體的類
2.它使得易於交換產品系列
3.它有利於產品的一致性
難以支援新種類的產品
可是即便是使用了抽象工廠, 我們修改資料庫的時候還是要開啟**,在客戶端中做更改,而且增加新資料庫的時候要做好多改動…… 有沒有什麼方法能把這兩個問題解決了呢? 下篇部落格繼續介紹**的改進版。
人生不就是這樣嗎
到底要多少個夜晚的閃爍 我的光波才能映照在你的心海 所以我想 或者我應該是一顆星 如果我是一顆星,就可以 撕開黑夜進入那個無物的中心,就可以 用黑色填滿我所有牽念的空洞,甚至 連我自己也不剩,只有一片飛翔的蒼茫的悲涼。或者只有一種靜謐,我點一盞六角的燈 朝著北方以北的方向,隨著夜色密密匝匝地追逐 你...
不就是包地打孔嘛,能有多講究?
原創 高速先生 黃剛 文 問 為什麼要包地?答 為了控阻抗和降低串擾 問 那包地需不需要打過孔呢?答 要啊,必須要啊,不然包地就沒意義了。問 那包地打孔設計一般需要注意什麼地方呢?答 是的,坊間傳說的包地神技能其實並沒有那麼直觀。什麼叫直觀,就好像1 1 2。好了,別逗了 那就好比10 的阻抗變化會...
UI設計不就是畫線框,憑什麼年薪30W?
程式歐巴 介面畫好沒?按鈕圓的方的不都能用嗎?糾結那多幹嘛?產品經理 這次我們就10個頁面,半天能夠搞定吧,都有互動了。其他設計 你們不就是畫線框圖嗎?我自學半個月都能轉行了 彷彿全世界都能做ui設計,只不過你運氣好,碰上了這個事少錢多的行業。但講真ui設計行業遠沒有想象的那麼簡單。看看原型圖 加個...