关于策略模式的 个人理解
2017-09-20 18:55
190 查看
个人感觉策略模式 就是在代码中预留的接口,可以动态替换成不同的实现.
采用接口编程实际上就是变相的策略模式, 一个类中含有一个接口的引用,
综合前面的设计模式, 跟静态代理模式是一样的. 实际执行的时候,是根据类中接口的实现类来决定的.
通过上篇文章里面学到的采用注释解决if else 方法算是学到, 但是也是有缺点的. 就是需要把实现类放到一起.然后通过指定路径去访问,
因为这种代理是 runtime代理, 只能通过反射,反射是需要知道class的. 解决可以通过, souce代理 编译期间 生成class文件. 直接生成factory就好了
代理模式也理解的更加深刻些, 代理模式完全就是对你想要的对象包装了一下. 上篇文章的例子那个map很经典. 本来是应该返回两个对象来顺序执行方法,
他直接就返回了一个代理对象. 然后把实现的类 保存在
SortedMap<Integer, Class<? extends CalPrice>> clazzMap = new TreeMap<Integer, Class<? extends CalPrice>>();
这里, 在代理类执行方法的时候, 遍历map顺序执行方法就好了.
扫描包内所以class代码
//获取扫描的包下面所有的class文件 private File[] getResources(){ try { File file = new File(classLoader.getResource(CAL_PRICE_PACKAGE.replace(".", "/")).toURI()); return file.listFiles(new FileFilter() { public boolean accept(File pathname) { if (pathname.getName().endsWith(".class")) {//我们只扫描class文件 return true; } return false; } }); } catch (URISyntaxException e) { throw new RuntimeException("未找到策略资源"); } }
相关文章推荐
- 关于命令模式个人的理解 撤销 重做的实现
- 关于ubuntu 进入单用户模式,破解root用户密码的个人理解
- 关于桥接模式的个人理解
- 关于代理模式的个人理解
- 关于职责链模式的个人理解
- 关于备忘录模式的个人理解
- 关于工厂模式的 个人理解
- 关于建造者模式的个人理解
- 关于装饰者模式的个人理解
- 关于android的设计模式---MVP的个人理解
- 关于面向对象的几种模式和个人理解
- 关于KMP模式匹配算法的个人理解
- 关于colinux tuntap模式的个人理解
- 关于观察者模式的 个人理解
- 关于模板方法模式的 个人理解
- 关于命令模式的一些理解
- 关于概率dp的个人理解与总结
- 控件重叠 关于WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解(个人认为还是相当全面的)
- 关于策略模式初解
- 关于享元模式的个人理解