設計模式(一) 策略模式

2021-09-12 04:32:51 字數 2332 閱讀 1155

設計模式(一)——策略模式

本文描述的是策略模式

我們假設有如下場景:

我們使用聊天工具聊天時,可以傳送點對點訊息(私聊)和點對多訊息(群聊),而傳送不同的訊息執行的操作是不一樣的,也就是說我們在不同的場景下(私聊或者群聊)傳送訊息時會呼叫不同的傳送方法,但是我們只有乙個訊息傳送器(可以理解為傳送訊息時的傳送按鈕),我們希望可以通過這訊息傳送器傳送任何型別的訊息。

所以如下**描述了如何使用策略模式實現上述需求:

我們先定義乙個訊息的公共介面,所有不同型別的訊息都實現這個介面,這個介面包含乙個傳送方法

package com.gy.designpattern.strategy;

/** * classname:imessage

* function: 這是乙個訊息的介面,所有的訊息都要實現這個介面.

* reason: todo add reason.

* date: 2012-7-3 下午3:09:07

* @author gongyong

* @version

* @since jdk 1.6

* @see

*/public inte***ce imessage

然後我們定義兩個類實現該介面,分別是乙個點對點訊息和點對多訊息:

package com.gy.designpattern.strategy;

/** * classname:p2mmessage

* function: 點對多訊息.

* reason: .

* date: 2012-7-3 下午3:15:05

* @author gongyong

* @version

* @since jdk 1.6

* @see

*/public class p2mmessage implements imessage

}

package com.gy.designpattern.strategy;

/** * classname:p2pmessage

* function: 點多點訊息.

* reason: todo add reason.

* date: 2012-7-3 下午3:12:14

* @author gongyong

* @version

* @since jdk 1.6

* @see

*/public class p2pmessage implements imessage

}

然後定義乙個訊息傳送器

package com.gy.designpattern.strategy;

/** * classname:messagesender

* function: 訊息傳送器.

* reason: todo add reason.

* date: 2012-7-3 下午3:18:24

* @author gongyong

* @version

* @since jdk 1.6

* @see

*/public class messagesender

/*** send:ok,傳送訊息.

* @author gongyong

* @since jdk 1.6

*/public void send()

}

最後我們看如何使用這個訊息傳送器傳送不同型別的訊息,我們假設有乙個使用者:

package com.gy.designpattern.strategy;

/** * classname:someuser

* function: 這就是將傳送訊息的使用者,愛誰誰

* reason: todo add reason.

* date: 2012-7-3 下午3:24:02

* @author gongyong

* @version

* @since jdk 1.6

* @see

*/public class someuser

}

ok,到這裡,乙個簡單的策略模式的實現就完成了,使用策略模式的好處是,我們可以使用這個訊息傳送器傳送任何型別的訊息,而你要做的就是定義乙個新的訊息,該訊息實現了imessage介面,然後通過這個訊息傳送器就可以呼叫,其餘的都不用考慮。

設計模式(一) 策略模式

一 模式動機 為什麼要使用策略模式呢?在日常開發中,我們可以發現一種需求可以有不同的方法來實現,比如我們要對乙個陣列進行排序,就可以使用多種不同的排序方法 選擇排序 氣泡排序 快速排序等 每一種排序方法都可以被稱作一種策略,我們可以在不同的情況下來選擇不同的策略進行排序。在實現的時候我們可能會寫乙個...

設計模式 一 策略模式 1

策略模式用到就是 多型 的思想,父類有多個子類,為同乙個行為實現不同的表現形式 舉例 1個中國人,1個印度人,他們都吃飯,但是中國人是用筷子,印度人是用手,這個就是多型,同一行為的2種實現方式 吃飯行為 public inte ce eating中國人和印度人 public class chines...

設計模式 策略設計模式

策略設計模式其實就是多型的使用,父類引用指向子類物件。策略模式的最大特點是使得演算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。策略模式的缺點其實也很明顯,在於策略模式把每一種具體的策略都封裝成乙個實現類,如果策略有很多的話,很顯然是實現類就會導致過多,顯得臃腫。案列 author de...