1. 程式人生 > >Android 設計模式 策略模式

Android 設計模式 策略模式

定義一個策略介面:

public interface Strategy {

    void travel();
}

寫兩個實現類:

public class WalkStrategy implements Strategy {
    @Override
public void travel() {
        //walk
}
}
public class PlaneStrategy implements Strategy {
    @Override
public void travel() {
        //plane
}
}

自定義持有策略引用類:

public class StrategyContext {

    private 
Strategy strategy; public Strategy getStrategy() { return strategy; } public void setStrategy(Strategy strategy) { this.strategy = strategy; } public void travel() { if (strategy != null) strategy.travel(); } }
StrategyContext strategyContext = new StrategyContext();
strategyContext.setStrategy(new WalkStrategy()); strategyContext.travel(); strategyContext.setStrategy(new PlaneStrategy()); strategyContext.travel();
不同策略只要寫不同的實現類即可

相關推薦

Android開發之設計模式-策略模式

在策略模式(Strategy Pattern) 一個類的行為或其演算法可以在執行時更改。這種型別的設計模式屬於行為型模式。 在策略模式中,我們建立表示各種策略的物件和一個行為隨著策略物件改變而改變的 context 物件。策略物件改變 context 物件的執行演算法。 意圖:定義一系列

移動開發之設計模式- 策略模式(IOS&Android)

資源 完全參照策略模式|菜鳥教程但不包括IOS程式碼 策略模式 在策略模式(Strategy Pattern)中,一個類的行為或其演算法可以在執行時更改。這種型別的設計模式屬於行為型模式。 在策略模式中,我們建立表示各種策略的物件和一個行為隨著策略物件改變而改變的 context

Android 設計模式 策略模式

定義一個策略介面:public interface Strategy { void travel(); }寫兩個實現類:public class WalkStrategy implements

PHP設計模式-策略模式

行為 一個 文件 ech 策略 something protected this cte <?php//策略模式//將一組特定的算法或行為 封裝成一個類,以適應上下文環境//策略的接口文件 約定策略的行為 針對一種情況 產生具體的策略interface Policy

設計模式——策略模式

contex mas bob listbox inf items 收銀系統 setter .com 聲明:以下內容來源於《大話設計模式》,學習。 策略模式:定義了算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。 商場收費策略:正

設計模式策略模式

onclick sea func cal sdn 不同的 memory hide http 參考http://blog.csdn.net/calmreason/article/details/51029285 定義一系列相同的算法 根據不同需求選擇不同的算法策略 代碼

C++設計模式——策略模式

code spa fine 技術分享 pin ati first virtual headfirst 模式定義:策略模式定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。 舉個例子來説,不同鴨子的行爲是不同的,我們可以把變化的行爲提

Java 設計模式策略模式

ember edm 等級 dia span private edi concrete tin   在閻宏博士的《JAVA與模式》一書中開頭是這樣描述策略(Strategy)模式的:   策略模式屬於對象的行為模式。其用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立的

設計模式之——淺談strategy模式(策略模式)

兩個 事情 操作 none 要去 編碼 淺談 一點 進行 strategy模式,即策略模式。個人覺得吧,策略模式更多的是一種思維方式。 首先我們要知道,為什麽需要策略模式。舉個例子,比如用程序輸出今天下午去玩什麽。 PlayGame 玩遊戲 package site.wa

設計模式---策略模式

不同的 ext 減少 交互 運行時 系列 使用 增加 策略 策略模式:它定義算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。 Context(應用場景): 1. 需要使用ConcreteStrategy提供的算法。 2. 內部

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

提高 {} xiang 有一個 ble 問題 其它 add 新的 轉載地址:http://blog.csdn.net/lifuxiangcaohui/article/details/8065059 這篇文章講述的策略模式非常棒,在此轉載。 設計模式; 一個程序員對設計模

Python設計模式——策略模式(孫悟空用什麽打妖怪)

就是 作用 oop 事情 input 邏輯控制 except exce one #coding:utf-8 ''' 策略模式作用: 就是使用多種算法來解決一個問題,最大的特性的是:能夠在運行時透明地切換算法(客戶端代碼對變化無感知)

C# - 設計模式 - 策略模式

變化 繼承 否則 www. 默認 ref 獨立 UNC int 策略模式 問題場景 多個類型都有一些共同的屬性和方法,可以稱這些成員為行為,為了避免重復在多個類型中編碼相同部分的行為,應考慮將這些行為定義在抽象類(超類)中,利用繼承時多個類型可以共享這些行為。比如定義一

Java設計模式----------策略模式

用戶 無法 提交 main 遊戲 抽象 可能 測試類 ide 以下內容來自HeadFIrst設計模式一書和http://www.cnblogs.com/xrq730/p/4906313.html的博文,作為自己的學習筆記總結如下。 HeadFirst設計模式一書在開篇就

設計模式-策略模式

設計模式 策略模式 public abstract class baseClass { public abstract double getResult(double num1,double num2); } public class A:baseClass { pub

PHP設計模式 -- 策略模式

所有 約定 IT 傳統 else emc 區別 ima TP 策略模式:   6、將一組特定的行為和算法封裝成類,以適應某些特定的上下文環境。   1、 多個類只區別在表現行為不同,可以使用Strategy模式,在運行時動態選擇具體要執行的行為。 2、 需要在

java設計模式-策略模式

temp return private 數組排序 寫法 冒泡 有一種 eth RF 背景:將一個數組排序,並且打印; 1.下面使用選擇排序、和冒泡排序來寫:                         public class Test { public

設計模式-策略模式(strategy pattern)

pre rac uml類圖 獨立 CA 使用 dep () nes 來說說設計模式吧,最近開始看設計模式,覺得挺有意思的。設計模式網上的資料的挺多的,而且大部分是大家相互轉來轉去的。感覺也挺沒有意思。我就自己寫一點吧! 開始 學習設計模式,我

Java常用設計模式——策略模式

nts static 管理 選擇 span disco rri contex 由於 策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使它們還可以相互替換,策略模式讓算法獨立於使用它的客戶而獨立變化。策略模式使這些算法在客戶端調用它們的時候能夠互不影響地變化

HeadFirst設計模式---策略模式 C#實現

模式 adf oid info wing face rmq protected src 鴨子基類 將行為封裝起來 class Duck { protected IFlyBehavior flyBehavior; protec