Strategy Pattern
定義演算法家族,將個別演算法封裝起來,讓它們可以互相替換。此 pattern 讓演算法的變動不會影響到使用演算法的部分。
Strategy pattern 是一種定義一系列演算法的方法,所有演算法完成的都是相同的工作,只是實作不同,它可以以相同的方式 call 所有演算法,減少了各種演算法 class 與使用演算法的 class 間的耦合。
例子:最短路徑搜尋
將 shortest path algorithm 封裝起來,讓 RouteFinder
使用。RouteFinder
使用 ShortestPathStrategy
找 shortest path(RouteFinder
將找路徑的工作 delegate 給 ShortestPathStrategy
),ShortestPathStrategy
的 instance 則依據使用哪種 algorithm 決定。
有新的 algorithm 或 strategy 時只要 implement ShortestPathStrategy
並換掉 RouteFinder
使用的 instance 即可。
使用 RouteFinder
的 client code 跟演算法 strategy 的 class 就是分開、不互相耦合的。