11 面向可维护性的设计模式

本文深入探讨了设计模式中的创建型、结构型和行为型模式,包括工厂方法、适配器、装饰器、策略、模板和迭代模式。这些模式在软件设计中起到关键作用,如工厂方法用于延迟实例化,适配器模式用于接口转换,装饰器模式用于动态添加功能,策略模式允许动态切换算法,模板模式则定义通用步骤和特定实现,而迭代模式则确保容器类的遍历一致性。了解并正确应用这些模式能够提高代码的灵活性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建型模式

1.工厂方法
也称作虚拟构造器,用于定义一个用于创建对象的接口,让其子类来决定实例化哪个类,从而使一个类的实例化延迟到其子类。
静态工厂方法即可以在ADT中实现,也可以构造单独的工厂类。
在这里插入图片描述
工厂方法的选择
在这里插入图片描述
左右两棵树的子类型一一对应。如果在工厂方法里使用type表征右侧的子类型,那么左侧的子类型只要1个即可。

结构型模式

  1. 适配器adaptor模式
    将某个类/接口转换为client期望的其他形式。通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体的子类。
    在这里插入图片描述
    适配器模式选择
    在这里插入图片描述
  2. 装饰器模式 decorator
    对每个特性构造子类,通过委派机制增加到对象上。使用了子类行和委派。
    在这里插入图片描述

行为型模式

  1. 策略模式
    有多种不同算法来实现同一个任务,但需要client根据需要动态切换算法;为不同的实现算法构造抽象类,利用委托,运行时动态传入client倾向的算法类实例。
    根据需要切换不同的方法实现。
    在这里插入图片描述
    策略模式选择
    在这里插入图片描述

  2. 模板模式
    做事情的步骤一样,但具体的方法不同,共性的步骤在抽象类内公共实现,差异步骤在各个子类中实现。
    在这里插入图片描述
    使用继承和重写来实现。

  3. 迭代模式
    客户端希望遍历被放入容器或集合类的一组ADT对象,无需关系容器的具体类型,也就是说,不管对象被放进哪里,都应该提供相同的遍历方式。
    让自己的集合类实现Iterable接口,并实现自己的独特Iterator迭代器,允许客户端利用这个迭代器进行显示或隐式的迭代遍历。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. visitor 模式

设计模式的对比

1.共性样式:只使用继承,不实用委托。OCP,DIP。
Adaptor
使用场合:你已经有了一个类,但其方法与目前client的需求不一致,根据OCP原则,不能改这个类,所以扩展一个adaptor和一个统一的接口。
Template
适用:有共性的算法流程,但算法个步骤有不同的实现,将共性提升之父类,个性保留在子类。
2. 共性样式
Strategy
想有多个算法的实现,要在右侧树中扩展子类行,在左侧子类行中传入不同的类型实例。
Iterator
左右两棵树,其实分别只有一个子类行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值