GOF之行为型模式Ⅱ(重点)

解释器模式(Interpreter)

用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计

实例:EL表达式,正则表达式,SQL语法,数学表达式
ps:尽量不要使用解释器模式,后期维护有很大麻烦。
在项目中,可使用Jruby,Groovy,java的js引擎替代解释器的作用,弥补java的不足。

访问者模式(Visitor)

对于存储在一个集合中的对象,可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象
可以接收一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。

实例:XML文档解析器设计,编译器的设计,复杂集合对象的处理

策略模式(Strategy)

使得具体的算法和客户端进行分离,算法可以独立进行变化。
可以通过不同的配置文件,动态的建立不同的对象,切换不同的算法。
应用于解决某一个问题的一个算法族,允许用户任选一个算法解决某一问题。

组件:
Context:负责和策略进行交互
Strategy:抽象策略
ConcreteStrategy:具体策略

实例:GUI布局管理,Spring框架中Resource接口

UML:
在这里插入图片描述

模板方法模式(template method)

定义了一个操作中算法骨架,将某些步骤延迟到子类中实现。
新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。
一般直接使用匿名内部类实现某些方法,直接调用父类的启动方法。

核心:父类决定步骤,子类具体实现(钩子方法/方法回调)

实例:数据库访问封装,Junit单元测试,servlet中关于doGet/doPost

UML:
在这里插入图片描述

观察者模式(Observal)

用于1:N的通知

组件:
Subject/Objservable:目标对象,状态发生变化,持有一系列观察者对象
Observer:观察者对象,被告知目标状态改变
ps:JAVASE中java.util.Observable和java.util.Observer提供了方法来实现观察者模式

实例:广播机制,监听器,awt的事件处理

UML:
在这里插入图片描述

备忘录模式 memento

保存某个对象内部状态的拷贝,之后可将该对象恢复到原先的状态

组件:
Originator:源发器类,保存对象内部状态
Memento:备忘录类,存储拷贝
CareTaker:负责人类,存储备忘录
example:撤销,历史记录

UML:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值