`

设计模式“乱用”记录

阅读更多

自从拜读完阎宏的《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)类似。

 

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

分享到:
评论

相关推荐

    基于单片机智能挪车宝的设计.pdf

    智能挪车宝是一个为了有效解决乱停车问题而设计的智能装置。当车主需要临时停车时,可以通过此设备进行快速、安全的通知,从而避免因临时停车造成的矛盾纠纷。 ### 设计核心与组成 文中提到,智能挪车宝的设计核心...

    991es 爆机研究综合手册

    即使在已知的异常模式下,也可能观察到新的、未记录的行为或显示模式。 **9. 假死模式** 计算器似乎停止响应任何按键操作,但实际上仍在运行某些后台任务或处于某种特殊状态。 **10. 次方数字正括号模式** 这种...

    Brawl Stars Music & SFX Dataset

    《Brawl Stars 音乐与音效数据集》是一个专门针对移动游戏《Brawl Stars》(中文名:荒野乱斗)所制作的资源集合,包含游戏中的音乐和音效。这个数据集对于游戏开发者、音频设计师以及对《Brawl Stars》音频感兴趣的...

    停车场识别方案.doc

    - 防止拒缴和乱收费,通过自动化设计降低人为错误。 - 提供高质量的停车服务,包括自动泊车和快速出入,提升整体效率。 - 减少人力成本,提高管理效率和经济效益。 2. **系统特点** - 使用智能卡,具备防水、...

    Tab浏览器(c#)

    开发者可以学习MVC(Model-View-Controller)或其他设计模式来改进项目结构。 9. **UI设计**:为了提供良好的用户体验,UI设计也是一个重要方面,包括布局、颜色、字体等视觉元素的选择,以及交互设计,如按钮、...

    java jdbc 反射 word学习文档

    DAO(Data Access Object)模式是一种常用的软件设计模式,用于分离业务逻辑层和数据访问层。 #### 十、工厂模式 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。 #### 十一、事务ACID - **...

    口语交际:保护环境,人人有责.doc

    首先,课程内容从口语交际技巧切入,设计了讨论和角色扮演等互动环节,让学生在模拟真实情境中学习如何以有效的沟通方式劝阻他人不乱扔垃圾。这种教学方式不仅提高了学生的语言表达能力,也锻炼了他们在实际生活中...

    初三化学复习大全-48页.pdf

    4. **科学探究步骤**:科学探究通常包括提出问题、猜想与假设、设计实验、实验验证、记录与结论和反思与评价等步骤,这是学习化学时需要掌握的重要思维模式。 5. **化学实验器具**:化学实验中常见的加热仪器有试管...

    杜绝随意丢弃垃圾,保护校园环境的公益宣传.doc

    2. 教学环节:学生用手机拍摄校园垃圾问题,进行实地采访,制作视频和照片,展示多角度的环境问题,以触动人心,体现移动学习的优势。 3. 预期效果:通过视频和照片,使宣传活动更具影响力,促使学生深入反思,理解...

    jsp+bootstrap+servlet问答类网站.

    4. **MVC(Model-View-Controller)模式**:虽然未直接提及,但这种模式通常与JSP和Servlet一起使用。Model表示业务逻辑和数据模型,View负责呈现视图,Controller处理用户请求并协调Model和View。在这个项目中,JSP...

    MFC做的贪吃蛇~~~~~

    食物位置可以用一个简单的坐标对来记录。这样的设计使得添加新的蛇身部分和查找碰撞变得简单高效。 此外,MFC还提供了丰富的控件类,如CButton和CEdit,可以用于创建菜单、按钮等交互元素,使游戏具有暂停、重新...

    项目实例讨论-RUP&UML实践之路

    RUP倡导的迭代开发模式允许项目团队分阶段完成目标,每个迭代都有自己的计划、设计、编码和测试。这种模式使得项目可以在早期发现问题并进行调整,降低了项目失败的风险。 总之,RUP和UML的结合为软件开发提供了...

    《雷雨》教学演示课件.ppt

    不仅仅在文字层面,孩子们在理解雷雨天气特点的同时,还学习到了如何用恰当的文字来描绘周围环境和特定的氛围。 马凤娟老师在设计教学演示课件时,注重引导学生深入理解文本内容,通过“读一读”和“看一看”的活动...

    git-together:配对时更好地提交属性,而又不会弄乱git工作流程

    Git-together 是一个开源工具,专门设计用于在配对编程或群体编程(也称为 Mob 编程)场景中简化 Git 的工作流程。这个工具的主要目标是帮助团队成员共享提交属性,使得在多人协作时,提交记录能清晰地反映出是哪些...

    高层住宅安全技术和消防保卫措施居民住宅楼消防安全检查.docx

    - 定期开展安全活动,同时注重生产与安全防护,执行“横向到边,纵向到底”的安全管理模式。 - 设立专职安全员,负责现场的安全管理和文明施工,组织安全竞赛,进行书面安全技术交底,并定期进行安全规程学习。 -...

    中职生行为习惯养成教育教(学)案.doc

    在阐述习惯的重要性之后,韩老师列举了校园中常见的不文明行为,如乱丢垃圾、损坏公共设施、抄袭作业、上课睡觉等,通过这些具体生动的例子,学生们能够直观感受到不良习惯对个人、他人乃至学校环境造成的负面影响。...

    robocode 移动和射击策略.pdf

    本文将详细介绍Robocode中常用的移动策略和射击策略,并对其原理和应用场景进行深入探讨。 #### 二、移动策略 ##### 1. 随机移动(zRandom) - **定义**:机器人按照随机的方式进行移动,以增加对手预测难度。 - ...

    读《数据之巅》有感.doc

    大数据的应用是十分有必要的,特别是在公路养护技术薄弱的突出问题上,重点开展路况快速检测、病害诊断分析、大修养护设计、旧路升级改造等公路养护关键技术、高端装备、大型养护分析和养护设计软件的研发和工程化,...

    apache-jmeter-压测工具.zip

    它可以记录和回放用户的操作,生成详细的测试计划,以及分析测试结果。它的核心功能包括: 1. **负载测试**:JMeter能够创建多线程测试计划,模拟成千上万的并发用户,以检查系统在高负载下的表现。这有助于发现...

Global site tag (gtag.js) - Google Analytics