【2020-面试实战】-设计模式

1 代理模式和装饰模式的区别

在装饰器模式和代理模式之间还是有很多差别的。装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。
使用代理模式,代理和真实对象之间的的关系通常在编译时就已经确定了,而装饰者能够在运行时递归地被构造。

2 在工作中用到哪些设计模式?

设计模式是程序员在设计过程中多年的最佳实践沉淀, 可以提高工程师之间的研发质量, 沟通效率.

工作中,我研发的SaaS系统模块中使用了模板方法模式
场景:
我们的风控系统,既需要对接其它渠道的接口,也需要将接口提供给别人(如登录,充值). 每个渠道的登录和充值接口的实现都是不太一样的. 而SaaS作为接入的服务平台,需要保证接入的一致性,以及消除到不同平台的差异性.
使用模板方法模式之后:

  • 固定了接入的流程:都有登录和充值…
  • 解耦了协议和实现:每个渠道按照对应的对接协议差别的接入,在上层抹掉差异
  • 扩展性好,可以轻松的增加新渠道;

在优化登录代码的时候,使用了观察者模式(具体是通过Guava提供的EventBus)
之前的登录代码是面条式的,一行代码处理一个对应的逻辑,比如,登录完成之后,记录日志,通知积分服务增加积分,通知统计服务增加登录次数,变更日活;

使用观者模式之后,发一个登录成功的消息,在监听者中处理不同的逻辑操作。简化了代码,可维护性,可扩展性得到了提高。

3 JDK 和 Spring中用到的设计模式

JDK

  • 装饰器模式:java.io中的流处理;
  • 建造者模式:Http2/client的构建;
  • 单例模式: Runtime类, 单例模式主要在高并发的情况下,需要加入双检锁,或者直接使用枚举单例的方式。

Spring

  • 工厂模式: BeanFactory, ApplicationContext中的对象创建;
  • 观察者模式: 各种事件的发布和通知
  • 模板模式: JdbcTemplate
  • AOP: 综合了代理,装饰器,适配器模式

未完待续

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值