深入淺出學習設計模式之策略模式《一》
深入淺出練習設計模式之裝飾模式《二》
最近感覺自己上班上了很久的班,卻感覺迷茫的很,思來想去,想想還是需要靜下心來,回顧一下自己的知識,
今天就回顧一下自己剛開始學的設計模式,記錄一下,設計模式 ,以便自己鞏固複習
設計模式遵循的原則
單一原則
開閉原則
歷史代還
依賴倒置
介面隔離原則
迪公尺特法則
1.策略模式
策略模式用乙個簡單的例子--商場**
商場** 經常會有活動,會員返積分,滿300減100,無會員 正常收費,打8折等
如果硬編碼的話,一般的思維方式是目前有什麼需求就加什麼條件,這只僅僅滿足當下的業務,如果擴充套件的話,是非常困難的
而採用策略模式的話,就相對來說就用於擴充套件了
1.首先定義乙個抽象類用於接受金額的引數
public abstract class cashsuper
2.正常收費的子類
public class cashnomal extends cashsuper
}
3.打折的子類
public class cashrebate extends cashsuper
@override
public double acceptcash(double money)
}
4.滿***返***的子類
public class cashreturn extends cashsuper
@override
public double acceptcash(double money)
return result;
}}
5.定義乙個上下文類用於對cashsuper的引用
public class cashcontext
public void contextinte***ce(double money)
}
6.測試結果為
這樣就運用了乙個簡答的策略模式,
這裡如果策略和簡單工廠結合的話,就需要改造一下cashcontext
改造後的cashcontext
public class cashcontext2 }
public double getresult(double money)
}
測試結構
public class test
}
需要不同的策略只需要傳入不同的type,對於客戶端來說,簡化了
總結策略模式是一種定義一系列演算法的方法,從概念上看,所有這些演算法完成的都是相同的工作,只是實現不同,他可以一相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類之間的耦合,
一句話概括:策略模式封裝了變化
深入淺出設計模式 模板模式
設計模式是程式設計師必須掌握的技能,熟練應用各種設計模式,不僅可以提公升我們的編碼能力,也可以使得我們的編碼更美觀。在這裡我們來講解一下模板模式。模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式...
深入淺出設計模式 工廠模式
披薩店新推出了點單系統,披薩需要通過不同的製作,相同的烘焙,裁剪等工序才能完成。披薩的種類實在太多了,在構造披薩例項時,光是if else 語句就長的可怕,修改與維護更令人頭疼。披薩子類繼承實現相同的基類,通過基類呼叫不同的子類,使得 具有一定的彈性,將構造子類放入業務 導致了子類與業務 的耦合,令...
深入淺出設計模式 設計模式之路
2.2 根據模式的作用劃分 3.總結 博主經過6年的 洗禮,慢慢意識到 中使用設計模式的重要性。然而,在我遇到的程式設計師大軍中,我大概歸類了以下幾類人 因此,博主計畫做乙個設計模式的系列帖子,記錄學習筆記,力求深入淺出設計模式。目前有23種設計模式。設計模式有兩種分類方法,一種是根據模式的目的來劃...