策略模式
来源:互联网 发布:华讯软件 编辑:程序博客网 时间:2024/05/23 18:17
public class ProcessFiles { public interface Strategy { void process(File file); } private Strategy strategy; private String ext; public ProcessFiles(Strategy strategy, String ext) { this.strategy = strategy; this.ext = ext; } public void start(String[] args) { try { if(args.length == 0) processDirectoryTree(new File(".")); else for(String arg : args) { File fileArg = new File(arg); if(fileArg.isDirectory()) processDirectoryTree(fileArg); else { // Allow user to leave off extension: if(!arg.endsWith("." + ext)) arg += "." + ext; strategy.process( new File(arg).getCanonicalFile()); } } } catch(IOException e) { throw new RuntimeException(e); } } public void processDirectoryTree(File root) throws IOException { for(File file : Directory.walk( root.getAbsolutePath(), ".*\\." + ext)) strategy.process(file.getCanonicalFile()); } }
注意策略模式和函数对象之间的关系,方法中的一个参数是函数对象,在方法中的策略使用了此函数对象中的函数,例如比较器comparator
public int sort(int[]a, comparator) { ...;comparator.compare(a,b); }
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- fzu 1402 中国剩余定理 http://acm.fzu.edu.cn/problem.php?pid=1402
- SQL中的几种简单数据类型
- 2012-12-07日 第一篇笔记
- 内核编译(二)
- POJ3249 工作难题(DAG有向无环图的单源最短路径)
- 策略模式
- Oracle expdp/impdp工具使用
- 设计模式一(简单工厂,采用python实现)
- 管理定律
- 哈希表 平方探测再散列
- 求数组中第k小的数,或者最小的k个数
- 利用二分搜索,查找一个给定的值所在区间
- netstat命令
- string的初步应用