模板模式与观察者模式

我们常把 23 种经典的设计模式分为三类:创建型、结构型、行为型。
分别用来解决什么类型的问题?

  • 创建型设计模式:对象的创建
  • 结构型设计模式:类或对象的组合或组装
  • 行为型设计模式:类或对象之间的交互

设计模式就是用来解耦的

  • 创建型模式是将创建和使用代码解耦
  • 结构型模式是将不同功能代码解耦
  • 行为型模式是将不同的行为代码解耦
模板模式

模板模式基于继承来实现,回调基于组合来实现

在模板模式经典的实现中,模板方法定义为 final,可以避免被子类重写。需要子类重写的方法定义为 abstract,可以强迫子类去实现。不过,在实际项目开发中,模板模式的实现比较灵活,以上两点都不是必须的。

模板模式应用示例应用示例:Java Servlet、JUnit TestCase、bean的创建与初始化

模板模式在 Spring 中的一个典型应用,那就是 Bean 的创建过程。
Bean 的创建包含两个大的步骤:对象的创建和对象的初始化。其中,对象的初始化又可以分解为 3 个小的步骤:初始化前置操作、初始化、初始化后置操作。

观察者模式

框架的作用有:隐藏实现细节,降低开发难度,做到代码复用,解耦业务与非业务代码

以下分别介绍java、guava、spring中提供的观察者模式用法
1、Java 提供的框架比较简单,只包含 java.util.Observable 和 java.util.Observer 两个类。
2、Google Guava 提供的框架功能比较完善和强大:通过 EventBus 事件总线来实现观察者模式,@Subscribe注解用来观察指定的事件类型以及父类型。
被观察者发送消息到EventBus,事件总线根据消息类型,将消息发送给可匹配的观察者。
3、Spring 也提供了观察者模式的实现框架:Event 事件(相当于消息)、Listener 监听者(相当于观察者)、Publisher 发送者(相当于被观察者)。

spring中我们借助ApplicationListener、ApplicationEventPublisher完成简单的事件通知。
当调用ApplicationEventPublisher.publishEvent()时,spring会查找实现了ApplicationListener接口、并且使用了指定泛型的bean,然后调用其onApplicationEvent()。
我们把观察者注册到了 ApplicationContext 对象中。这里的 ApplicationContext 就相当于 Google EventBus 框架中的“事件总线”。

观察者模式和模板模式示例

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值