zoukankan      html  css  js  c++  java
  • 关于策略模式的 个人理解

    个人感觉策略模式 就是在代码中预留的接口,可以动态替换成不同的实现.

    采用接口编程实际上就是变相的策略模式, 一个类中含有一个接口的引用,

    综合前面的设计模式, 跟静态代理模式是一样的. 实际执行的时候,是根据类中接口的实现类来决定的.

    通过上篇文章里面学到的采用注释解决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("未找到策略资源");
            }
        }
        
  • 相关阅读:
    谷歌镜像站【转】
    Jquery基础教程第二版学习记录
    js 闭包理解
    power query 分组合并展示
    WPF Event 在 Command 中的应用初级篇,支持所有Event 展示松耦合设计的全部代码
    WPF 面试题及答案(三)
    WPF 面试题及答案(二)
    WPF 基础面试题及答案(一)
    一个简单WPF登陆界面,包含记住密码,自动登录等功能,简洁美观
    Java基础
  • 原文地址:https://www.cnblogs.com/haoerlv/p/7563104.html
Copyright © 2011-2022 走看看