對象行爲型模式 - Strategy策略模式

介紹

* 策略模式是指對一系列的算法定義,並將每個算法封裝成一個類,並且它們還能夠相互替換

優勢

* 簡化單元測試,由於每一個算法都是一個獨立的類
* 減小了算法類和使用算法類的耦合性
* 提升了算法的重用性
* 減小了條件語句

缺點

* 策略模式並無解決客戶端要選擇建立那個依賴的壓力,可是能夠經過 策略模式+簡單工廠模式 來減輕客戶端的職責

使用場景

* 同一個目的,不一樣的實現
* 須要在不一樣狀況下使用不一樣的策略(算法),或者策略還可能在將來用其它方式來實現
* 對客戶隱藏具體策略(算法)的實現細節,讓其彼此徹底獨立。

入門案例:

UML圖解:
算法

代碼:ide

TravelStrategy單元測試

/**
 * 旅行策略接口(
 */
public interface TravelStrategy {
    void goTrave();
}

Walk測試

public class Walk implements TravelStrategy {
    
    @Override
    public void goTrave() {
        System.out.println("走路去旅行");
    }
}

Drivethis

public class Drive implements TravelStrategy {
    
    @Override
    public void goTrave() {
        System.out.println("開車去旅行");
    }
}

Planecode

public class Plane implements TravelStrategy {

    @Override
    public void goTrave() {
        System.out.println("坐飛機旅行");
    }
}

Personblog

public class Person {

    private TravelStrategy travelStrategy;

    public Person(TravelStrategy travelStrategy){
        this.travelStrategy = travelStrategy;
    }

    public void goTrave(){
        travelStrategy.goTrave();
    }
}

Main接口

public class Main {
    public static void main(String[] args){
//        Person person = new Person(new Walk());
        Person person = new Person(new Plane());
        person.goTrave();
    }
}
相關文章
相關標籤/搜索