五月份将轮到我第二次分享设计模式。本文算是我对即将到来的分享的一次大纲梳理。主要内容包含如下四个部分:
接下来,我大致列一下每个板块的内容。
软件质量的理解
在这个部分,我想大致从如下几个方面进行:
软件缺陷分布、不同阶段修复Bug的成本进行说明。
了解不同的软件质量模型,看看其关注点有哪些。
给出圈复杂度的计算方法、圈复杂度的意义以及与软件质量的关系。
重温S.O.L.I.D原则
违反SOLID原则以及符合原则的示例,也就所谓的BAD以及GOOD示例。通过对比,增加大家对设计原则的理解,并掌握一些套路 。
以下给出一个违反单一职责原则的示例。
单一职责原则(Single Responsibility Principle,SRP):一个类只负责一个功能领域中的相应职责或可以定义为:就一个类而言,应该只有一个引起它变化的原因。
违反SRP原则的示例
在这个示例中,Person类包含了一个名为Wallet的成员变量,并且该类还包含了两个方法来添加和删除钱包中的金额。
这违反了SRP原则,因为Person类应该只负责表示一个人的信息,而不应该与钱包的操作有关。应该将钱包的操作单独封装到一个Wallet类中,让Person类只负责人的信息。
符合SRP原则的示例
在这个示例中,Person类仅包含一个名为Wallet的成员变量,而不包含任何关于钱包的操作。这里将钱包的操作单独封装到Wallet类中,让Person类只负责人的信息。
这样,当需要修改钱包的操作时,只需修改Wallet类即可,而不会影响到Person类的实现。
设计原则现实项目中的实战
在这个部分,我想给出如下几个设计模式:
我们可以使用代理模式在目标对象实现的基础上,以增加额外的功能操作或者逻辑,即可扩展目标对象的功能。比如以给出方法耗时时间打印为示例。
从静态代理说起,然后引出动态代理。
并说明相关原理说明。
以不同行业执行不同指标计算为示例,给出策略模式
比如:我们有不同渠道去扣税,每个渠道的输入报文各不相同,但是,其大致的流程有类似性:
又如API开放接调用,包括粗略的几个统一步骤:
给出对账流程的示例,我们模拟监听目录查看是否有对账文件到达。
如对账文件到达,则我们开启对账处理流程,经历文件达到状态、准备数据状态、处理中状态以及完成对账状态4个阶段,不同状态下处理不同的逻辑。
设计模式扩展
补充23种模式之外的几种设计模式,比如空对象模式、对象池模式以及规格模式。
最后,给出一个抽象 + 多态的魅力,看看其在不同模式间的演变和作用。
大致先构思这么多 ... ...
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。