設計模式之 Strategy 策略模式

2021-09-01 11:20:23 字數 1607 閱讀 7636

策略模式簡述:

優點:1、可以動態的改變物件的行為

缺點:1、客戶端必須知道所有的策略類,並自行決定使用哪乙個策略類

2、策略模式將造成產生很多策略類

今天本人實現的主要是 策略模式之comparable和comparator介面。用大白話說,就是我們在比較大小的時候,在類中定義乙個策略的比較器,由該比較器決定按照什麼標準去實現大小的比較。

抽象策略類是mycomparable類,具體策略類是cat類,應用場景類datasorter類,執行環境類是testcomparable類。

comparable介面是通過compareto方法實現比較,那麼我們就可以在各個子類中重寫compareto方法實現子類之間的比較。

輸出結果:

實現根據不同的標準進行比較:

需要我們自己定義不同的比較器,實現比較。

在cat類中定義乙個策略的比較器,在compareto方法中呼叫該比較器的compare方法。

當然我們也可以直接使用jdk中封裝好的介面進行實現,而且實現的時候可以通過使用泛型,簡化操作。

還有就是陣列中也有直接實現對物件進行排序的sort(object os)的方法,可以直接使用,但是查api就可以發現,該方法的使用要求object類必須實現comparable介面。

策略模式也是還可以用以商家打折的情況,不管打折情況如何,都是實現乙個isstrategy介面,重寫strategy方法即可。

本次學習主要是為了學習如何實現jdk中的原始碼,深入理解設計模式,實現的介面可能較為簡單,僅作為個人學習記錄。

其他知識:

排序演算法口訣:冒擇路(入)兮快歸堆

具體每個演算法:

冒泡、選擇排序、插入排序、雜湊排序、快排序、歸併排序、堆排序。

static方法一般稱作靜態方法,由於靜態方法不依賴於任何物件就可以進行訪問,因此對於靜態方法來說,是沒有this的,因為它不依附於任何物件,既然都沒有物件,就談不上this了。並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變數和非靜態成員方法,因為非靜態成員方法/變數都是必須依賴具體的物件才能夠被呼叫。

設計模式之Strategy 策略

strategy策略模式是屬於設計模式中 物件行為型模式,主要是定義一系列的演算法,把這些演算法乙個個封裝成單獨的類.stratrgy應用比較廣泛,比如,公司經營業務變化圖,可能有兩種實現方式,乙個是線條曲線,乙個是框圖 bar 這是兩種演算法,可以使用strategy實現.這裡以字串替代為例,有乙...

設計模式之Strategy 策略

strategy策略模式是屬於設計模式中 物件行為型模式,主要是定義一系列的演算法,把這些演算法乙個個封裝成單獨的類.stratrgy應用比較廣泛,比如,公司經營業務變化圖,可能有兩種實現方式,乙個是線條曲線,乙個是框圖 bar 這是兩種演算法,可以使用strategy實現.這裡以字串替代為例,有乙...

設計模式之Strategy 策略

strategy策略模式是屬於設計模式中 物件行為型模式,主要是定義一系列的演算法,把這些演算法乙個個封裝成單獨的類.stratrgy應用比較廣泛,比如,公司經營業務變化圖,可能有兩種實現方式,乙個是線條曲線,乙個是框圖 bar 這是兩種演算法,可以使用strategy實現.這裡以字串替代為例,有乙...