Advertisement

将代码重构为设计模式的经典案例,并提供超详细的Java源码。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
/* * 原始需求背景: * 网宿CDN需要按月对客户提供的服务进行费用收取,根据流量的使用量以及所选取的服务类型,采用不同的收费标准。具体的收费规则如下: * 对于web应用,收取1000元/M;对于流媒体应用,收取1000元/M*0.7;对于下载应用,收取1000元/M*0.5。此外,在每月月末时,系统需要生成详细的费用报表,该报表需罗列每个用户的每个频道的具体费用信息,并汇总客户的总费用。同时,还需计算并打印该客户的重要性指数,其计算公式为:重要性指数=网页流/100+下载流量/600; * * 需求变更场景: * 系统已经成功上线运行,目前运维部门希望对系统进行进一步的调整和优化。首要需求是能够将数据输出为XML格式,以便供其他系统进行读取和处理。然而,由于这段代码无法在XML输出代码中复用report()函数中的任何功能,因此唯一的解决方案就是重新编写一个xmlReport()函数,并大量重复report()函数中的操作逻辑。虽然当前此修改并不复杂,直接复制report()函数并进行修改即可满足需求。 * 不久之后,成本中心又提出了修改计费规则的要求。因此,我们必须同时对xmlReport()和report()函数进行调整并确保两者之间的协调一致性。更重要的是,当后续需要进行更多修改时,简单的复制-粘贴操作可能会带来潜在的风险和问题。 * 随后,客服部门提出希望调整服务类型以及用户重要性指数计算规则的要求, 但尚未确定具体的改动方案, 这些方案都将影响最终的计费规则。程序必须再次同时修改xmlReport()和report()函数以适应这些变化。随着各种规则的不断增加和变得更加复杂, 适宜的修改点也变得越来越难以找到, 从而导致不犯错误的概率显著降低。 * 现在, 我们将运用所学面向对象的设计原则和方法论来对系统进行全面的改写与重构。 */

全部评论 (0)

还没有任何评论哟~
客服
客服
  • ,附Java
    优质
    本书深入剖析经典软件设计案例,并详细讲解如何运用设计模式进行代码重构。书中提供了丰富的Java语言实现示例,帮助读者掌握实际应用技巧。 原始需求背景是网宿CDN需要按月向客户收取服务费用,根据流量大小和服务类型的不同来确定收费标准。具体的收费标准如下:web应用为每兆1000元;流媒体应用则按照每兆700元计算;下载应用的计费方式则是每兆500元。在月底生成报表时,需要列出每位客户每个频道的具体费用以及客户的总费用,并且还要显示该客户的重要性指数,重要性指数通过公式网页流量/100+下载流量/600来得出。 随着需求的变化,运维部门希望系统能够输出xml格式的数据以供其他系统的读取和处理。然而,由于report()函数的逻辑无法直接应用于生成xml数据的需求中,因此需要创建一个新的名为xmlReport()的方法。尽管在最初的阶段可以通过复制现有的report()方法并进行相应调整来实现这一目标,但随着成本中心提出修改计费规则的要求以及客服部门计划对服务类型和用户重要性指数计算方式进行更改时,上述做法的问题开始显现。 每次变更都需要同时更新两个不同的函数(xmlReport() 和 report())以保持一致性。这不仅增加了开发的复杂度,还可能导致错误的发生。因此,在面对越来越多的需求变化与复杂的计费规则调整过程中,我们需要采用面向对象编程的原则和方法来重新设计系统结构,从而提高代码复用性和维护性。
  • Java十大
    优质
    本书提供了十个经典的Java编程实例,并附带详细的源代码。通过这些案例的学习与实践,读者可以深入理解Java语言及其应用技巧。 《Java十大经典案例》源代码非常丰富且经典,值得一看。
  • ANSYS 7.2 解(附带
    优质
    《ANSYS 7.2经典案例详解》是一本深入解析工程仿真软件ANSYS 7.2应用的技术书籍,书中包含丰富的实例和源代码,适合工程师和技术人员学习参考。 1.ANSYS SOLID65环向布置钢筋的例子 3 2. 混凝土非线性计算实例(1)- MISO单压 5 3. 混凝土非线性计算实例(2)- MISO约束压 6 4. 混凝土非线性计算实例(3)- KINH滞回 9 5. 混凝土非线性计算实例(4)- KINH压-拉裂 11 6. 混凝土非线性计算实例(5) 12 7. 混凝土非线性计算实例(6) 14 8. 混凝土非线性计算实例(7)- MISO滞回 16 9. 混凝土非线性计算实例(8) 18 10. 混凝土非线性计算实例(9)-梁平面应力 20 11. 四层弹簧-质点模型的地震分析 22 12. 悬臂梁地震分析 48 13. 使用beam54单元描述变截面梁的例子 72 14. 变截面梁实例 73 15. 拱桥浇筑过程分析-单元生死应用实例 74 16. 简支梁实体与预应力钢筋分析实例 75 17. 简单的二维焊接分析-单元生死实例 77 18. 隧道开挖(三维)的命令流 84 19. 岩土接触分析实例 101 20. 钢筋混凝土管的动力响应特性分析实例 109 21. 隧道模拟开挖命令流(入门) 116 22. 螺栓连接的模拟实现问题 119 23. 道路基层、垫层模量与应力之间的关系 129 24. 滞回分析 151 25. 模拟某楼层浇注 153 26. 在面上施加移动的面力 155 27. 在任意面施加任意方向的压力变化实例 159 28. 预紧分析 160 29. 几何非线性+塑性+接触+蠕变 162 30. 埋设在地下的排水管道 167 31. 幕墙企业玻璃简化计算 172 32. 等截面杆单元生死应用实例 188 33. 梁板建模联系 189 34. 简单的例子-如何对结构的振动控制分析 192 35. 模态分析结果输出实例 194 36. 火车过桥动态加载实例(部分) 196 37. 悬索结构找形和计算例题 213 38. 陶瓷杆撞击铝板的例子 218 39. 反作用力的APDL命令法求解 221 40. LS-DYNA实例(部分) 222 41. 路面分层填筑对路基的影响分析 223 42. 含地震影响振动与频率计算例题 227 43. 接触面上的压力总和 231 44. 施加位置函数荷载实例 235 45. 非线性分析考虑刚度退化 236 46. 圆形水池的静力分析案例 237 47. ANSYS中混凝土模式预应力模拟算例 238 48. 悬臂梁受重力作用发生大变形求其固有频率实例 240 49. 循环对称结构模态分析例子 242 50. 三角平台受谐波载荷作用的响应案例 244 51. 受地震谱激励应力分布和支反力计算案例 246 52. 受时程载荷作用应力分布与变形过程实例 248 53. 经典层合板理论应用示例 250 54.定易圆轨迹的例子 257 55.模拟门式刚架施工-单元生死案例 257 56.钢筋混凝土整体式模型例子
  • C++版23种
    优质
    本书精选了23种经典的软件设计模式,并提供了每一种模式在C++语言中的实现方法和应用场景的经典案例。 设计模式是一套被反复使用且多数人熟悉的、经过分类编目的代码设计经验总结。采用设计模式能够实现代码的可重用性,并使他人更容易理解代码,同时确保系统的稳定性。显然,设计模式对个人、团队及系统都有益处;它使得编码过程更为工程化。 创建型模式主要涉及对象实例化的具体方式(共五种模式);结构型模式则关注于如何组合类和对象以构建更复杂的结构(七种模式);行为型模式描述了类或对象之间的交互以及职责分配的方式(共有十一种模式)。本资源使用C++实现了23种设计模式的经典案例。
  • C++版23种
    优质
    本书通过详细的代码示例和深入浅出的解析,全面介绍了软件开发中常用的23种设计模式在C++语言中的应用。适合中级开发者提升设计技能。 设计模式是一套被反复使用且多数人熟知的代码设计经验总结。采用设计模式可以实现代码复用、提高他人理解代码的能力以及保证代码的可靠性。无疑,设计模式对个人、团队及系统都是有益处的;它使编码过程更加工程化。创建型模式通常涉及对象实例化的不同方式(共五种模式);结构型模式描述了类和对象如何组合以形成更大的结构(共有七种模式);行为型模式则用于说明类或对象之间的交互以及职责分配的方式(共有十一种模式)。本资源使用C++语言实现了23种设计模式的经典案例。
  • 软件解析
    优质
    本书深入浅出地剖析了多种经典的软件设计模式,通过具体的案例帮助读者理解并掌握各种设计模式的应用场景和实现方法。 这段文字介绍了几种经典的软件设计模式:模板方法模式、外观模式、代理模式、装饰器模式、桥接模式、工厂方法模式以及组合模式,并提供了简单易懂的讲解,内容透彻明了。这是作者平时学习时所做的笔记加上个人的理解整理而成,是一份非常不错的学习资料。
  • vensim.zip
    优质
    这个压缩包包含了使用Vensim软件的经典建模案例的源代码,适合学习系统动态模型构建和模拟的专业人士和技术爱好者。 vensim经典案例源码.zip
  • Java中四层架
    优质
    本项目展示了Java设计模式下的四层架构(表示层、业务逻辑层、持久化层和数据访问对象层)的实际应用,并提供了详细的示例代码。 基于JAVA的四层架构模式包括抽象层、实现层、业务逻辑层和组装层。本Demo主要强调一种设计思想,与经典的设计模式中的策略模式有相似之处。建议在学习软件设计时可以参考硬件接口的设计理念。该Demo使用MyEclipse7.0下的UML工具建立类图结构,并自动反向生成JAVA代码。
  • WF4.0
    优质
    WF4.0经典案例代码是一本深入讲解Windows Workflow Foundation 4.0应用开发的专业书籍,通过丰富的实际案例和源代码解析,帮助读者掌握工作流设计与实现技巧。 Windows Workflow Foundation 4.0(简称WF4.0)是微软.NET Framework 4.0中的一个组件,用于构建业务流程应用。它引入了许多改进和新特性,使得开发人员能够更轻松地设计、实现和管理复杂的业务流程。 在这一部分中,“WF4.0经典实例代码”提供了学习关键概念和实用技巧的机会。核心概念包括工作流、活动、执行状态以及持久化功能。其中,工作流代表了业务过程的抽象,并由一系列活动组成;这些活动可以是简单的操作或嵌套的工作流。活动作为构建工作的基本单元定义其行为,而执行状态则反映了流程在生命周期中的位置(例如:正在运行、等待输入等)。WF4.0还提供了持久化功能,允许工作流的状态被保存至数据库中以便后续恢复。 实例代码可能涵盖以下主题: 1. **活动设计与使用**:展示如何创建自定义的活动以及利用顺序流、选择流和并行流等活动库来构建复杂的工作流程。 2. **数据绑定与变量**:WF4.0支持的数据绑定机制使活动能够轻松地与外部数据源交互。实例中可能包括了关于如何通过变量存储及传递信息,同时使用表达式处理这些数据的方法。 3. **工作流服务**:利用Windows Communication Foundation(WCF), WF4.0使得工作流可以作为服务对外提供,并展示了创建和使用此类服务的示例以及与其他服务交互的方式。 4. **持久化与恢复**:演示了如何保存及恢复WF4.0中工作的实例状态,确保流程在异常或系统重启后能够继续执行。 5. **规则引擎**:介绍了支持动态修改工作流行为的功能,并通过代码展示了使用规则引擎来决定流程路径的示例。 6. **监控与调试**:提供了强大的工具用于工作流的监控和调试过程中的设置跟踪,以及如何利用Visual Studio进行相关操作的方法展示。 7. **版本控制与迁移**:支持平滑地将旧的工作流实例迁移到新版本的能力,并通过具体案例来说明这一机制的应用。 4599.pdf文档和技术教程可能提供了关于WF4.0的详细信息,而4594.zip文件则包含了实际代码示例。深入研究这些资源可以帮助开发者理解基本原理并获得在业务流程自动化领域的实践经验与技能提升。