常见设计模式与使用场景(2)
2020-07-27 本文已影响0人
费城的二鹏
依赖倒转原则(IOC与DI)
学过 SpringMVC 的应该很熟悉,实例化对象就用到了这个原则,目的就是减少手写 new 代码。好处当然不是少写代码,而是为了可以根据配置初始化不同的接口实例,最常用的例子就是单元测试,可是注入专用的测试对象实例。当然里面也涉及了动态代理之类的知识,也说明了设计模式需要配合使用不是孤岛存在。
代理模式
这个模式分为静态代理与动态代理,静态代理需要手写代理的实现代码,所以作为懒惰的程序员常用的是动态代理。
举个例子,Spring 面向切面编程 AOP 就是采用了动态代理的方式,依据注解或者配置生成特定的代理类,在调用方法前执行特定的代码。常用的场景之一就是 Spring 事务,在方法调用前开启一个事务,然后调用方法,方法结束前会关闭事务,期间也会合理的处理异常情况。另一个例子是 Retrofit,他采用动态代理的方式实例化服务对象,里面会读取注解的配置与参数表配置,并且组装起来调用 okhttp 方法。
我们一般不需要手写这种设计模式,但是如果真遇见了一个合适场景,那么会非常的酷。
建造者模式
日常我们构造一个对象,一般直接使用构造函数传参的方式。但是当需要的参数比较多时,可选参数较多时,构造器就不太方便实现。此时就是建造者模式的用武之地,常用例子有 okhttp 的对象初始化。
by 费城的二鹏 2020.07.26 长春