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

Java 設計模式之策略模式

本文為筆者學習《Head First設計模式》的筆記,並加入筆者自己的理解和歸納總結

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

結構圖
在這裡插入圖片描述

交通策略(TrafficStrategy)。

public interface TrafficStrategy{
    void run();
}

實現三種交通策略,開車(CarStrategy)、公交(BusStrategy)和自行車(BicycleStrategy)。

public class CarStrategy implements TrafficStrategy{

    @Override
    public void run() {
        System.out.println("buy car");
    }
}

public class BusStrategy implements TrafficStrategy{

    @Override
    public void run() {
        System.out.println("buy bus");
    }

}

public class BicycleStrategy implements TrafficStrategy{

    @Override
    public void run() {
        System.out.println("buy bicycle");
    }

}

人們(People)上班時可以採用不同的交通策略(TrafficStrategy)。

public class People {
    private String name;

    public People(String name) {
        this.name = name;
    }

    public void gotoWork(ITrafficStrategy strategy) {
        System.out.print(name + " goto work ");
        strategy.run();
    }

}

執行

public static void main(String[] args) {
    People jack = new People("Jack");
    jack.gotoWork(new CarStrategy());

    People mike = new People("Mike");
    mike.gotoWork(new BusStrategy());

    People lily = new People("Lily");
    lily.gotoWork(new BicycleStrategy());
}

輸出

Jack goto work buy car
Mike goto work buy bus
Lily goto work buy bicycle

相關文章
Java 設計模式之策略模式
Java 設計模式之觀察者模式
Java 設計模式之裝飾者模式
Java 設計模式之工廠方法模式
Java 設計模式之抽象工廠模式
Java 設計模式之單例模式