註:本文章示例為C#代碼,設計模式通用任何編程語言,可放心閱讀 設計模式(3W1H) What?針對特定問題特出的特定的解決方案 Why?讓程式有更好的可擴展度 Where?一般情況下,開發中真正使用設計模式的地方不多。面試 JVM底層機制 模式 框架底層應用了很多設計模式 How?任何時候、任何場 ...
註:本文章示例為C#代碼,設計模式通用任何編程語言,可放心閱讀
設計模式(3W1H)
What?針對特定問題特出的特定的解決方案
Why?讓程式有更好的可擴展度
Where?一般情況下,開發中真正使用設計模式的地方不多。面試---JVM底層機制 模式 框架底層應用了很多設計模式
How?任何時候、任何場合、任何語言都符合自己所制定的規則
一.單例模式
一個類只有一個全局實例
//構造私有 private FrmPlay() { InitializeComponent(); } //2.靜態成員變數 private static FrmPlay play; //3.定義一個公有的 靜態的 返回類類型的方法 public static FrmPlay GetInstance() { if (play==null) { play = new FrmPlay(); } return play; }
//省略調用代碼
保證步驟:單例(一個類在記憶體中只能有一個對象)三條件
1. 類構造設置私有
2. 定義一個私有的靜態的類類型變數
3. 定義一個共有的靜態方法 並且方法返回值類型為類類型的方法
二.簡單工廠模式
一個工廠方法,依據傳入的參數,生成對應的具體產品對象;
工廠方法一般設成靜態方法,返回值一般是抽象類或介面,具體的產品類一般繼承或實現抽象類、介面;
優點:產品使用者不需要關心產品類的創建過程,與具體產品的實現類達到解耦的效果;
缺點:違背"開放--封閉"原則(OCP),因為新增一個產品類的時候,需要修改原先的工廠方法;
適用場合:當工廠類負責創建的對象比較少的時候;
public static Calculater GetInstace(string oper) { //父類 Calculater calc = null; //3.進行判定 運算符和 + - switch (oper) { /* *各子類---里氏替換原則 **/ case "+": calc = new Add(); break; case "-": calc = new Sub(); break; case "*": calc = new Multi(); break; case "/": calc = new Div(); break; default: break; } return calc; }
//省略各子類與調用父類代碼
保證步驟:
1.創建的對象比較少
2.公有靜態返回值為父類類型的方法
3.里氏替換的子類(也就是swich中)繼承自抽象父類
未完,待續。。。