设计模式“乱用”记录

自从拜读完阎宏的《Java与模式》后,即开始进入到 第一步 “乱用”境界,在此留下脚印。

 

Builder

1) 创建业务操作日志对象

  • 背景:设计开发一个适用于采用SSH结构开发的应用系统的通用操作日志模块。
  • 使用原因简述:由于该对象的部分属性值(如操作对象、操作内容、操作前值、操作后值等)的产生根据业务的不同会发生变化,同时这些属性的生产顺序存在着一定先后关系。
  • 模式角色对应:
    Builder定义生成与操作日志PO属性对应的方法接口以及返回PO的方法接口
    Concrete BuilderBuilder定义的方法实现
    Director负责按一定顺序调用Builder中的方法
    Product操作日志PO

2) 创建Excel对象

  • 背景:编写Web页面列表数据导出到Excel文件的工具类(基于poi组件)。
  • 使用原因简述:一个Excel表格通常可分为表头、表数据、统计行这3部分,一般来说在导出成为Excel格式时也会按这3步进行,且顺序也是有所讲究。
  • 模式角色对应:
    Builder定义生成表头、表数据、统计行的方法接口以及返回对象的方法接口
    Concrete BuilderBuilder定义的方法实现
    Director负责按表头、表数据、统计行的顺序调用Builder中的方法
    ProductHSSFWorkbook对象

Chain of Responsibility

1) 另见:  commons-chain 应用记录

 

Command

1) 消息接口服务端

  • 背景:需要接收来自3种客户端发来的消息,并进行分发处理。
  • 使用原因简述:每个消息接口最终的处理是一致,在接收后、处理前根据不同种类的客户端可能还有一些额外处理。
  • 模式角色对应:
    Client3种客户端
    Command
    消息接口
    ConcreteCommandCommand定义的方法实现,分别对应各个具体消息接口的实现
    Invoker3个调用者,分别对应3种客户端
    Receiver消息的统一接收终端

Strategy

1) 解析文本文件,得到业务对象 / 将业务对象的属性值转换成文本

  • 背景:客户端与服务端通过文本文件交互数据。
  • 使用原因简述:文本文件的内容格式有xml和按行这2种,这2种格式所对应的解析/生成方法不同。
  • 模式角色对应:
    Context具有Strategy属性、外部调用其得到结果
    Strategy要得到的结果的方法接口
    ConcreteStrategyStrategy定义的方法实现,分别有2个具体实现类对应2种情形

2) 生成业务操作日志对象的各个属性值

  • 背景:设计开发一个适用于采用SSH结构开发的应用系统的通用操作日志模块。
  • 使用原因简述:由于系统是基于SSH开发的,操作日志功能的加入是采用AOP方式实现的,触发操作日志记录主要有以下2种情形:1是通过struts的action触发;2是通过其他方式(如webservice接口等),不同情形下生成各个具体属性值的实现方法不同。
  • 模式角色对应:
    Context具有Strategy属性、外部调用其得到结果
    Strategy要得到的结果的方法接口
    ConcreteStrategyStrategy定义的方法实现,分别有2个具体实现类对应2种情形

Proxy

1) 调用解析文本文件方法之前的处理

  • 背景:在调用解析方式之前需要一些额外处理(如判断待解析的内容是否为null等)。
  • 使用原因简述:通过这种结构解耦具体解析方法及其调用。
  • 模式角色对应:
    Subject
    解析方法接口
    RealSubject具体解析方式调用过程
    ProxySubject持有RealSubject引用,在具体解析方式调用过程之前,进行一些额外处理

2) 修改原有业务接口的具体实现(增加一些业务校验等)

  • 背景:原先实现不够完善,现在需要增加一些业务校验。
  • 使用原因简述:已有的实现本身并没有太多问题,只是需要在其之前加些处理,通过这种结构避免修改已有代码。
  • 模式角色对应:
    Subject
    业务接口方法
    RealSubject原有的业务接口方法具体实现类
    ProxySubject持有RealSubject引用,调用原有的业务接口实现前的处理均在此实现。

3) 与2)类似。

 

在进行完善性维护时较为常用该模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值