《敏捷软件开发原则,模式与实践》阅读笔记三
敏捷
常用设计模式
4.1.1 Command模式的优点
- 通过对命令概念的封装,可以解除系统的逻辑互联关系和实际连接的设备之前的耦合。
- 另一个Command模式的常见用法是创建和执行事务操作。
- 解耦数据和逻辑,可以将数据放在一个列表中,以后再进行实际的操作。
4.1.2 Active Object模式
描述
Active Object模式是实现多线程控制的一项古老的技术。 控制核心对象维护了一个Command对象的链表。用户可以向链表中增加新的命令,或者调用执行动作,该动作只是遍历链表,执行并去除每个命令。
RTC任务
采用该技术的变体一去构建多线程系统已经是并且将会一直是一个很常见的实践。这种类型的线程被称为run-to-completion任务(RTC), 因为每个Command实例在下一个Command补全可以运行之前就运行完成了。RTC的名字意味着Command实例不会阻塞。
共享运行时堆栈
Command实例一经运行就一定得完成的的赋予了RTC线程有趣的优点,寻就是它们共享同一个运行时堆栈。和传统的多线程中的线程不同, 不必为每个RTC线程定义或者分配各处的运行时堆栈。这在需要大量线程的内存受限系统中是一个强大的优势。
4.2 Template Method模式和Strategy模式:继承和委托
4.2.1 Template Method模式
描述
Template Method模式展示了面向对象编程上诸多经典重用形式中的一种。其中通用算法被放置在基类中, 并且通过继承在不同的具体上下文实现该通用算法。
代价
继承是一种非常强的关系,派生类不可避免地要和它们的基类绑定在一起。
4.2.2 Strategy模式
描述
Strategy模式使用了一种非常不同的方法来倒置通用算法和具体实现之间的依赖关系。不是将通用的应用算法放进一个抽象基类中, 而是将它放进一个具体类中,在该具体类中定义一个成员对象,该成员对象实现了实际需要执行的具体算法, 在执行通用算法时,把具体工作委托给这个成员对象的所实现的抽象接口去完成。
4.2.3 对比
共同点
Template Method模式和Strategy模式都可以用来分离高层的算法和的具体实现细节,都允许高速的算法独立于它的具体实现细节重用。
差异
Strategy模式也允许具体实现细节独立于高层的算法重用,不过要惟一些额外的复杂性、内存以及运行时间开销作为代价。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2019-05-26 Android Studio三种运行方法