一.創建型模式 模式名稱 定 義 使用頻率 學習難度 簡單工廠模式 (Simple Factory Pattern) 定義一個工廠類,它可以根據參數的不同返回不同類的實例,被創建的實例通常都具有共同的父類。 ★★☆☆☆ ★★★☆☆ 工廠方法模式 (Factory Method Pattern) 定義
一.創建型模式
模式名稱 |
定 義 |
使用頻率 |
學習難度 |
簡單工廠模式 (Simple Factory Pattern) |
定義一個工廠類,它可以根據參數的不同返回不同類的實例,被創建的實例通常都具有共同的父類。 |
★★☆☆☆ |
★★★☆☆ |
工廠方法模式 (Factory Method Pattern) |
定義一個用於創建對象的介面,但是讓子類決定將哪一個類實例化。工廠方法模式讓一個類的實例化延遲到其子類。 |
★★☆☆☆ |
★★★★★ |
抽象工廠模式 (Abstract Factory Pattern) |
提供一個創建一系列相關或相互依賴對象的介面,而無須指定它們具體的類。 |
★★★★☆ |
★★★★★ |
建造者模式 (Builder Pattern) |
將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 |
★★★★☆ |
★★☆☆☆ |
原型模式 (Prototype Pattern) |
使用原型實例指定待創建對象的類型,並且通過複製這個原型來創建新的對象。 |
★★★☆☆ |
★★★☆☆ |
單例模式 (Singleton Pattern) |
確保一個類只有一個實例,並提供一個全局訪問點來訪問這個唯一實例。 |
★☆☆☆☆ |
★★★★☆ |
二.簡單工廠模式的結構與實現
(一)簡單工廠模式的結構
顧客想買奶昔披薩或者培根披薩都會通過工廠來買。如果先實現這個功能的話。
1)第一步先創建窗體
2)第二步創建一個產品的父類
//產品的父類 //使用來了抽象方法關鍵字是 abstract public abstract class Pizza { public abstract string say(); }
3)第三步創建奶昔披薩的子類
註意:一定要繼承父類
public class chees:Pizza { public override string say() { return "我是奶昔披薩"; } }
4)第四步創建培根子類
public class pg:Pizza { public override string say() { return "我是培根披薩"; } }
5)第五步創建工廠類
//抽象類 工廠 public abstract class Fack { //靜態 父類 public static Pizza st(string Type) { Pizza pizza = null; switch (Type) { case"奶昔披薩": pizza = new chees(); break; case "培根披薩": pizza = new pg(); break; default: break; } return pizza; } }
6)點擊主窗體訂購按鈕寫如下代碼
private void btOk_Click(object sender, EventArgs e) { int num1=Convert.ToInt32( txtLfet.Text); string oper = cb.Text; int num2 = Convert.ToInt32(txtRight.Text); //04.調用工廠的靜態方法,傳入類型 ,獲取返回值 Operator part = Factory.cu(oper); part.NumLeft = num1; part.NumRight = num2; int result = 0; //05.調用對應父類變數的Calc()完成計算,接收返回值 try { result = part.Calc(); } catch (Exception ex) { MessageBox.Show(ex.Message); } //06.在Label中顯示 label1.Text = result.ToString(); }
三.單例模式