自从拜读完阎宏的《Java与模式》后,即开始进入到
第一步
“乱用”境界,在此留下脚印。
Builder
1) 创建业务操作日志对象
- 背景:设计开发一个适用于采用SSH结构开发的应用系统的通用操作日志模块。
- 使用原因简述:由于该对象的部分属性值(如操作对象、操作内容、操作前值、操作后值等)的产生根据业务的不同会发生变化,同时这些属性的生产顺序存在着一定先后关系。
- 模式角色对应:
Builder |
定义生成与操作日志PO属性对应的方法接口以及返回PO的方法接口 |
Concrete Builder |
Builder定义的方法实现 |
Director |
负责按一定顺序调用Builder中的方法 |
Product |
操作日志PO |
2) 创建Excel对象
- 背景:编写Web页面列表数据导出到Excel文件的工具类(基于poi组件)。
- 使用原因简述:一个Excel表格通常可分为表头、表数据、统计行这3部分,一般来说在导出成为Excel格式时也会按这3步进行,且顺序也是有所讲究。
- 模式角色对应:
Builder |
定义生成表头、表数据、统计行的方法接口以及返回对象的方法接口 |
Concrete Builder |
Builder定义的方法实现 |
Director |
负责按表头、表数据、统计行的顺序调用Builder中的方法 |
Product |
HSSFWorkbook对象 |
Chain of Responsibility
1) 另见: commons-chain 应用记录
Command
1) 消息接口服务端
- 背景:需要接收来自3种客户端发来的消息,并进行分发处理。
- 使用原因简述:每个消息接口最终的处理是一致,在接收后、处理前根据不同种类的客户端可能还有一些额外处理。
- 模式角色对应:
Client |
3种客户端 |
Command
|
消息接口 |
ConcreteCommand |
Command定义的方法实现,分别对应各个具体消息接口的实现 |
Invoker |
3个调用者,分别对应3种客户端 |
Receiver |
消息的统一接收终端 |
Strategy
1) 解析文本文件,得到业务对象 / 将业务对象的属性值转换成文本
- 背景:客户端与服务端通过文本文件交互数据。
- 使用原因简述:文本文件的内容格式有xml和按行这2种,这2种格式所对应的解析/生成方法不同。
- 模式角色对应:
Context |
具有Strategy属性、外部调用其得到结果 |
Strategy |
要得到的结果的方法接口 |
ConcreteStrategy |
Strategy定义的方法实现,分别有2个具体实现类对应2种情形 |
2) 生成业务操作日志对象的各个属性值
- 背景:设计开发一个适用于采用SSH结构开发的应用系统的通用操作日志模块。
- 使用原因简述:由于系统是基于SSH开发的,操作日志功能的加入是采用AOP方式实现的,触发操作日志记录主要有以下2种情形:1是通过struts的action触发;2是通过其他方式(如webservice接口等),不同情形下生成各个具体属性值的实现方法不同。
- 模式角色对应:
Context |
具有Strategy属性、外部调用其得到结果 |
Strategy |
要得到的结果的方法接口 |
ConcreteStrategy |
Strategy定义的方法实现,分别有2个具体实现类对应2种情形
|
Proxy
1) 调用解析文本文件方法之前的处理
- 背景:在调用解析方式之前需要一些额外处理(如判断待解析的内容是否为null等)。
- 使用原因简述:通过这种结构解耦具体解析方法及其调用。
- 模式角色对应:
Subject
|
解析方法接口 |
RealSubject |
具体解析方式调用过程 |
ProxySubject |
持有RealSubject引用,在具体解析方式调用过程之前,进行一些额外处理 |
2) 修改原有业务接口的具体实现(增加一些业务校验等)
- 背景:原先实现不够完善,现在需要增加一些业务校验。
- 使用原因简述:已有的实现本身并没有太多问题,只是需要在其之前加些处理,通过这种结构避免修改已有代码。
- 模式角色对应:
Subject
|
业务接口方法 |
RealSubject |
原有的业务接口方法具体实现类 |
ProxySubject |
持有RealSubject引用,调用原有的业务接口实现前的处理均在此实现。 |
3) 与2)类似。
在进行完善性维护时较为常用该模式。
分享到:
相关推荐
C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计...
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
就像在一年前看GoF的《设计模式》一书,和半年前用C++模拟、实现23种经典的设计模式一般,透过这个写解析的过程,我又看到了另外一个境界。一直认为学习的过程很多时候可以这样划分:自己学会一门知识(技术)、表达...
设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式 设计模式精解设计模式精解设计模式精解...
24中设计模式 混合设计模式 设计模式实际应用案例 费了很多时间和精力整理的
设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式
DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式
学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料
人人都懂设计模式 人人都懂设计模式
设计模式 四人帮设计模式。比较经典的设计模式。
设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计...
设计模式,分布式设计模式,Java设计模式,软件设计模式
设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏...
您的设计模式我们的设计模式,简单明了的设计模式是设计模式学习必备的书籍
本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...
设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式...
java设计模式,java设计模式,java设计模式,java设计模式,java设计模式,java设计模式,java设计模式,java设计模式,
此资源包括以下资料: <br>学习GoF设计模式的重要性.txt 设计模式逐个解析.rar 23种设计模式的实现(Java 版).rar DAO设计模式.rar C#设计模式.pdf 新版设计模式手册[C#].pdf JAVA设计模式...
c#设计模式-C#设计模式c#设计模式-C#设计模式c#设计模式-C#设计模式c#设计模式-C#设计模式
设计模式精解- GoF 23种设计模式解析附C++实现源码 懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 一直想把自己的学习经验以及在...