《敏捷软件开发》读书笔记 (2) -- 设计原则

本文介绍了软件设计的五大原则。单一职责原则强调一个类应仅有一个变化原因;开放封闭原则指软件实体可扩展但不可修改;LISKOV可替换原则要求子类型能替换基类型;依赖倒置原则是高层和底层模块都依赖抽象;接口隔离原则避免强迫客户依赖不用的方法。

 

  1. SRP,单一职责原则:就一个类而言,应该仅有一个引起它变化的原因

·        将过多的职责耦合在一个类中导致了脆弱设计

·        职责是变化的原因

·        如果应用程序变化的方式总是导致两个职责同时变化,则不应该分离他们

·        把业务规则和持久化子系统绑定在一起是自讨苦吃,这违反了单一职责原则。可以使用 Facade 或者 Proxy 模式进行重构,以解除这种耦合

·        软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离

  1. OCP,开放封闭原则:软件实体(类、模块、函数等等)应该是可扩展的,但是不可修改的<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

·        任何系统在其生命周期内都回变化

·        变化应该是导致添加新的代码,而不是修改已经正常运行的代码

·        OCP的关键是抽象

·        接口和客户的关系要比实现它的类和客户的关系更密切

·        策略模式和模板模式是用以满足OCP的最常用方法

·        没有对于所有情况都贴切的模型,也即不可能完全封闭,所以应该预先猜测出最有可能的变化种类

·        拒绝不成熟的抽象和抽象本身一样重要

 

  1. LSPLISKOV可替换原则:子类型必须能够替换它们的基类型

·        对于LSP的违反也潜在的违反了OCP

·        正方形从长方形继承的例子微妙的违反了这种原则

·        在考虑一个特定的设计是否恰当时,不能孤立地来看这个解决方案,必须根据设计的使用者所做出的合理假设来审视它

·        对象的行为方式是软件真正所关注的问题, IS A 关系是就行为而言的

·        派生类只能使用相等或更弱的前置条件来替换原始的前置条件,只能使用相等或更强的前置条件来替换原始的后置条件。

·        完成的功能少于基类的派生类通常不能替换基类,也不符合LSP

·        派生类不应该抛出基类不能预计的异常,否则违反LSP

  1. DIP,依赖倒置原则:高层模块不应该依赖于底层模块,二者都应该依赖于抽象

·        抽象不应该依赖于细节,细节应该依赖于抽象

·        所有结构良好的面向对象架构都具有清晰的层次定义,每个层次通过一个定义良好的受控接口向外提供一组内聚的服务

·        一个对象持有另外一个具体对象的引用可能破坏了DIP

·        策略不应该依赖于细节,细节和策略都应该依赖于抽象

·        如果依赖关系是倒置的,那么就是面向对象的设计,否则就是过程化的设计。

  1. ISP,接口隔离原则:不应该强迫客户依赖于他们不用的方法,将不同的接口分离,而不是集合

·        如果强迫客户程序依赖于那些他们不使用的方法,那么这些客户程序就面临着由于这些未使用方法的改变而带来的变更。

·        使用委托分离接口

·        使用多重集成分离接口

 

 

【路径规划】(螺旋)基于A星全覆盖路径规划研究(Matlab代码实现)内容概要:本文围绕“基于A星算法的全覆盖路径规划”展开研究,重点介绍了一种结合螺旋搜索策略的A星算法在栅格地图中的路径规划实现方法,并提供了完整的Matlab代码实现。该方法旨在解决移动机器人或无人机在未知或部分已知环境中实现高效、无遗漏的区域全覆盖路径规划问题。文中详细阐述了A星算法的基本原理、启发式函数设计、开放集与关闭集管理机制,并融合螺旋遍历策略以提升初始探索效率,确保覆盖完整性。同时,文档提及该研究属于一系列路径规划技术的一部分,涵盖多种智能优化算法与其他路径规划方法的融合应用。; 适合人群:具备一定Matlab编程基础,从事机器人、自动化、智能控制及相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于服务机器人、农业无人机、扫地机器人等需要完成区域全覆盖任务的设备路径设计;②用于学习理解A星算法在实际路径规划中的扩展应用,特别是如何结合特定搜索策略(如螺旋)提升算法性能;③作为科研复现与算法对比实验的基础代码参考。; 阅读建议:建议结合Matlab代码逐段理解算法实现细节,重点关注A星算法与螺旋策略的切换逻辑与条件判断,并可通过修改地图环境、障碍物分布等方式进行仿真实验,进一步掌握算法适应性与优化方向。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值