1. 程式人生 > >java設計模式之策略模式總結

java設計模式之策略模式總結

客戶端 出場 cnblogs ava java設計 bsp image 需要 com

策略模式的定義:(定義截自http://www.cnblogs.com/whgk/p/6087064.html)

1、策略模式定義了算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶

換句話講,也就是將那些使用的方法分別封裝成獨立的類,然後將這一類使用接口統一管理起來,讓需要使用這些方法的用戶能夠隨時調用它們。上面例子中的戰鬥行為就相當於定義中的算法一詞。只是換了個說法而已。

缺點:

1、客戶端必須知道所有的策略類,並自行決定使用哪一個策略類。這就意味著客戶端必須理解這些算法的區別,以便適時選擇恰當的算法類。換言之,策略模式只適用於客戶端知道算法或行為的情況。

2、由於策略模式把每個具體的策略實現都單獨封裝成為類,如果備選的策略很多的話,那麽這些類的數目就非常多了。

從代碼角度去認識策略模式:

(趙雲用三個妙計解決問題,這個場景中的要素有三個:三個妙計,一個錦囊,一個趙雲)

1.首先創建一個策略接口(包含一個每個錦囊都可以執行的算法)

技術分享

2.然後寫三個實現類,因為有三個妙計

技術分享

技術分享

技術分享

3.那麽計謀有了,需要一個錦囊來存放三個妙計

技術分享

4.主人公趙雲出場,一次打開妙計

技術分享

(自學所用,勿噴)

java設計模式之策略模式總結