java設計模式———策略模式

來源:互聯網
上載者:User

ava設計模式之——策略模式

 

1,什麼是策略模式?

策略模式,又叫演算法簇模式,就是定義了不同的演算法族,並且之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。

 

2,策略模式有什麼好處?

     策略模式的好處在於你可以動態改變對象的行為。

 

3,設計原則

 
     設計原則是把一個類中經常改變或者將來可能改變的部分提取出來,作為一個介面(c++z中可以用虛類),然後在類中包含這個對象的執行個體,這樣類的執行個體在運行時就可以隨意調用實現了這個介面的類的行為。下面是一個例子。 

      策略模式屬於對象行為型模式,主要針對一組演算法,將每一個演算法封裝到具有共同介面的獨立的類中,從而使得它們可以相互替換。策略模式使得演算法可以在不影響到用戶端的情況下發生變化。通常,策略模式適用於當一個應用程式需要實現一種特定的服務或者功能,而且該程式有多種實現方式時使用。

 

4 ,策略模式中有三個對象:
(1)       環境對象:該類中實現了對抽象策略中定義的介面或者抽象類別的引用。
(2)       抽象策略對象:它可由介面或抽象類別來實現。
(3)       具體策略對象:它封裝了實現同不功能的不同演算法。
利用策略模式構建應用程式,可以根據使用者配置等內容,選擇不同有演算法來實現應用程式的功能。具體的選擇有環境對象來完成。採用這種方式可以避免由於使用條件陳述式而帶來的代碼混亂,提高應用程式的靈活性與條理性。

 

5,應用情境舉例:

 

劉備要到江東娶老婆了,走之前諸葛亮給趙雲(伴郎)三個錦囊妙計,說是按天機拆開能解決棘手問題,嘿,還別說,真解決了大問題,搞到最後是周瑜陪了夫人又折兵,那咱們先看看這個情境是什麼樣子的。

抽象策略對象:

public interface IStrategy {public void operate();}

環境對象:

public class Strategy {private IStrategy strategy;public Strategy(IStrategy strategy) {this.strategy = strategy;}public void operate(){this.strategy.operate();}}

具體策略對象:

public class BackDoor implements IStrategy {@Overridepublic void operate() {System.out.println("喬國老開後門");}}

public class GivenGreenLight implements IStrategy {@Overridepublic void operate() {System.out.println("吳國太放綠燈...");}}

public class BlockArem implements IStrategy{@Overridepublic void operate() {System.out.println("孫夫人斷後...");}}

6,具體的實現,本案例是基於android實現的,在java中單獨寫一個Test類在main方法中實現。

Strategy stategy;stategy = new Strategy(new BackDoor());stategy.operate();stategy = new Strategy(new GivenGreenLight());stategy.operate();stategy = new Strategy(new BlockArem());stategy.operate();

看運行效果

       

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.