Strategy
把實作演算法獨立出來,並定義一個統一的介面,讓物件可以自由選擇要使用的演算法。
from: Strategy Pattern Tutorial with Java Examples
Example
Strategy
//Strategy Interface
public interface CompressionStrategy {
public void compressFiles(ArrayList<File> files);
}
public class ZipCompressionStrategy implements CompressionStrategy {
public void compressFiles(ArrayList<File> files) {
//using ZIP approach
}
}
public class RarCompressionStrategy implements CompressionStrategy {
public void compressFiles(ArrayList<File> files) {
//using RAR approach
}
}
Context
public class CompressionContext {
private CompressionStrategy strategy;
//this can be set at runtime by the application preferences
public void setCompressionStrategy(CompressionStrategy strategy) {
this.strategy = strategy;
}
//use the strategy
public void createArchive(ArrayList<File> files) {
strategy.compressFiles(files);
}
}
Usage
public class Client {
public static void main(String[] args) {
CompressionContext ctx = new CompressionContext();
//we could assume context is already set by preferences
ctx.setCompressionStrategy(new ZipCompressionStrategy());
//get a list of files...
ctx.createArchive(fileList);
}
}
from: Strategy Pattern Tutorial with Java Examples
其他
- 用enum實作