設計模式到底怎麼用疑惑,求助高人留步,不勝感激

mysd76發表於2009-10-22
工廠方法 工廠加工產品的地方,
工廠模式 還分等級 大概主要分三級吧

1>最簡單的想法 一個工廠類 一個抽象的產品 很多具體的產品
我可以透過工廠產生產品,所有產品的new 都依賴這個工廠
如果 這個工廠掛了 那麼就程式就癱瘓了. 這大概就是說的簡單工廠吧
用java語法大概是:抽象產品 產品 = 具體工廠 . 工廠方法(引數告訴工廠要生產什麼);---->這樣就獲取產品了

2>具體 工廠方法 和上面差不多 有一個抽象工廠 一個抽象產品 n多具體產品
不同的是 額外增加了 具體工廠 具體工廠幹什麼呢
具體工廠 實現抽象工廠的產品加工方法(也就是實現抽象工廠的介面)
一個具體工廠 對應 一個具體產品 一對一的生產
用java語法大概是:
抽象工廠 工廠 = new 具體工廠();
抽象產品 產品 = 工廠.方法();------> 這樣就獲取產品了

3>抽象工廠方法 和工廠方法類似
不同的是 抽象工廠方法 的抽象工廠 不止一個抽象工廠方法
比如 同樣是加工產品 比如這個廠子不單一生產一類產品了
原來只生產 水果 現在還生產 蔬菜
抽象工廠 裡就有 2個抽象 方法 一個蔬菜一個水果
比如生產 南方水果和南方蔬菜 就有
(一個抽象工廠 2個具體工廠(南北) 蔬菜抽象 水果抽象 具體蔬菜(南北) 具體水果(南北))

抽象工廠 工廠 = new 具體南方工廠();
南方水果抽象 水果 = 工廠.水果(); 南方蔬菜抽象 蔬菜 = 工廠.蔬菜();//北方一樣

---------------現在我才疑惑
比如我要做個 新增資料的功能 如果這麼寫

--------------如果把表設計成類似下面這樣
產品名稱 產品型別1 型別2
香蕉 水果類 南方
蘋果 水果類 北方
白菜 蔬菜類 北方
茄子 蔬菜類 南方

然後定義 1個 bean
名稱欄位 型別欄位
然後 錄入的時候 直接儲存在資料庫裡 就行了
然後查詢的時候 要產品 就用sql根據條件 查詢這個表 不管南北 菜果 不都能查出來
然後方法哦 定義好的實體裡 ,資料不就出來了嗎

------------------那麼如果用 工廠模式 去定義類
比如新增 一個產品記錄
從頁面傳過來值 然後初步判斷 是什麼 比如 是南方的水果 那麼就用工廠 製作 南方水果類 儲存資料然後新增 到資料庫
如果查詢 這樣不就會有很多的 類對應水果產品嗎 就算把水果產品的共同屬性 放在一個類裡 然後裝飾這個類構成需要的水果
那樣的話 類也會很多,

------所以我不明白.有沒有老師能提點下.我想學好OO的,或者是我沒描述清楚,我大概就是上面這個意思,可能表達不到位.
請老師幫助幫助.高手賜教,小弟不勝感激

相關文章