Java 設計模式之策略模式
阿新 • • 發佈:2018-12-07
本文為筆者學習《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 設計模式之單例模式