软件构造课程笔记(十一、十二)

可复用性和可维护性设计模式

创建型模式
  1. 工厂方法模式
    • 意图:定义一个创建对象的接口,让子类决定实例化哪一个类,从而推迟实例化到子类。
    • 使用场景:当一个类无法预测它需要创建的对象的类,或希望其子类指定对象时,以及需要委托给多个辅助子类中的一个时​(11 Design Patterns for …)​。
结构型模式
  1. 适配器模式

    • 意图:将一个类的接口转换为客户希望的另一个接口,使得原本因接口不兼容而不能一起工作的类可以协同工作,通过用一个新的接口包装一个已有类​(11 Design Patterns for …)​。
  2. 装饰模式

    • 动机:允许动态、灵活地为对象添加职责,而不是通过静态继承。
    • 示例:带有各种扩展的堆栈,如UndoStack、SecureStack和SynchronizedStack。装饰模式允许任意可组合的扩展,而不会导致组合爆炸和大量代码复制​(11 Design Patterns for …)​。
    • 实现:涉及创建一个实现被装饰对象接口的抽象装饰类,以及添加特定行为的具体装饰类​(11 Design Patterns for …)​。
行为型模式
  1. 策略模式

    • 问题:存在多种算法用于完成任务,客户需要在运行时动态切换这些算法。
    • 解决方案:定义一系列算法,分别封装,使它们可以在客户中互换。
    • 示例:排序算法如冒泡排序、归并排序和快速排序。为这些算法提供一个接口并实现每个变体,使客户可以在运行时选择算法​(11 Design Patterns for …)​。
  2. 模板方法模式

    • 意图:在抽象类中定义一个算法的骨架,允许子类提供某些步骤的具体实现。
    • 使用场景:适用于存在一个高层次算法且某些步骤可以由子类不同实现的情况​(11 Design Patterns for …)​。

构建健壮性和正确性的原则

健壮性原则
  1. 防御性编程

    • 概念:编写能够对意外输入和状态有弹性的代码,确保系统能继续正确运行。
    • 技术:输入验证、优雅地处理异常、确保程序各部分保持不变性。
  2. 错误处理

    • 方法:使用try-catch块、创建有意义的错误消息、记录错误以便后续分析。
正确性原则
  1. 断言

    • 使用:验证程序假设,在开发期间及早捕获错误。断言不应用于处理运行时错误,而是用于测试和调试期间检查不变性。
  2. 代码审查和测试

    • 代码审查:定期进行同行审查,以发现缺陷并提高代码质量。
    • 单元测试:为单独的代码单元编写测试,确保每个部分在隔离中正确运行。
    • 集成测试:验证应用程序使用的不同模块或服务能很好地协同工作。
  3. 形式化验证

    • 定义:通过数学方法证明算法相对于形式化规范的正确性。
    • 应用:适用于故障会产生严重后果的关键系统,如航空航天和医疗设备。

通过理解和应用这些设计模式和原则,软件开发人员可以创建不仅灵活和可维护,而且健壮和正确的系统,从而确保应用程序的长期成功和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值