美文网首页设计模式专家
spring常用设计模式

spring常用设计模式

作者: 青城楼主 | 来源:发表于2018-07-18 07:52 被阅读75次

    1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了;

    2.模版模式,这个也很明显,在各种BeanFactory以及ApplicationContext实现中也都用到了; 一个抽象类,很多的子类!抽象类写好主要的逻辑,一些不太重要的代码给其他人写!

    public abstract class AbstractImageLoader {

    //抽象类定义整个流程骨架
    public final void downloadImage(String imageUrl,int width,int height){
        //先获取最终的数据源URL
        String finalImageUrl=getUrl(imageUrl,width,height);
        //然后开始执行下载
    }
    //以下是不同子类根据自身特性完成的具体步骤
    protected abstract String getUrl(String imageUrl,int width,int height);
    

    }
    public class WebpImageLoader extends AbstractImageLoader {
    @Override
    protected String getUrl(String imageUrl, int width, int height) {
    return String.format("%s?imageView2/1/w/%d/h/%d/format/webp", imageUrl, width, height);
    }
    }
    测试类
    String imageUrl = "http://img.my.csdn.net/uploads/201309/01/1378037235_7476.jpg";
    AbstractImageLoader loader =new WebpImageLoader();
    loader.downloadImage(imageUrl,200,200);
    就是方法内的简易可扩展的代码留给子类去实现

    3.代理模式,在Aop实现中用到了JDK的动态代理;

    4.单例模式,这个比如在创建bean的时候。

    5.外观模式!相当于cotroller层,用户调用一个请求,只要调用cotroller即可,cotroller里面有封装各种service!调用一个cotroller会把各个service逻辑整合好,不需要暴露各个服务相关的操作!

    6.策略模式在Java中的应用,这个太明显了,因为Comparator这个接口简直就是为策略模式而生的。Comparable和Comparator的区别一文中,详细讲了Comparator的使用。比方说Collections里面有一个sort方法,因为集合里面的元素有可能是复合对象,复合对象并不像基本数据类型,可以根据大小排序,复合对象怎么排序呢?基于这个问题考虑,Java要求如果定义的复合对象要有排序的功能,就自行实现Comparable接口或Comparator接口.
    spring中在实例化对象的时候用到Strategy模式
    在SimpleInstantiationStrategy中有如下代码说明了策略模式的使用情况:

    7.原型模式:使用原型模式创建对象比直接new一个对象在性能上好得多,因为Object类的clone()方法是一个native方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。

    8.迭代器模式:Iterable接口和Iterator接口 这两个都是迭代相关的接口,可以这么认为,实现了Iterable接口,则表示某个对象是可被迭代的;Iterator接口相当于是一个迭代器,实现了Iterator接口,等于具体定义了这个可被迭代的对象时如何进行迭代的

    9,适配器模式

    10.装饰器模式 io流
    Spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。基本上都是动态地给一个对象添加一些额外的职责。

    11.桥连模式!连接数据库接口

    12,如果集成了dubbo还有观察者模式,消费者和生产者模式,
    spring中Observer模式常用的地方是listener的实现。如ApplicationListener。

    13.用了dubbo的netty协议,用了构造者模式,线程池模式

    相关文章

      网友评论

        本文标题:spring常用设计模式

        本文链接:https://www.haomeiwen.com/subject/wplduftx.html