软考知识点(更新)设计模式类模式和对象模式

一、类模式(Class Pattern)

  • 实现方式:使用继承关系,在编译时静态绑定。

  • 特点

    • 行为在类层级中固定,难以在运行时改变。
    • 通常通过重写父类方法模板方法来定义算法骨架。
    • 结构相对简单,但耦合度高(子类依赖父类)。
  • 典型模式

    • 创建型:工厂方法(Factory Method)
    • 结构型:类适配器(需要多重继承,如 C++,Java/.NET 中较少见)
    • 行为型:模板方法(Template Method)、解释器(Interpreter)

二、对象模式(Object Pattern)

  • 实现方式:使用对象组合委托,在运行时动态绑定。

  • 特点

    • 更灵活,可在运行时替换对象行为或结构。
    • 遵循“组合优于继承”原则,降低耦合。
    • 通常涉及多个对象协作,代码稍复杂。
  • 典型模式23种设计模式

    • 大部分设计模式都属于对象模式,例如:
      • 创建型:抽象工厂、建造者、原型、单例
      • 结构型:桥接、组合、装饰、外观、享元、代理、对象适配器
      • 行为型:策略、观察者、命令、状态、责任链、访问者、中介者、备忘录、迭代器

三、对比总结

特性类模式对象模式
关系建立时机编译时(静态)运行时(动态)
复用机制继承(is-a)组合/委托(has-a)
灵活性较低,无法在运行时改变较高,可动态替换组件
耦合度较高(子类依赖父类)较低(依赖接口/抽象)
典型例子模板方法、工厂方法23种设计模式策略、观察者、装饰器

四、在 GoF 分类中的体现

GoF 的 23 种模式按目的 × 作用范围划分:

目的 / 范围类模式对象模式
创建型工厂方法抽象工厂、建造者、原型、单例
结构型适配器(类适配器)适配器(对象适配器)、桥接、组合、装饰、外观、享元、代理
行为型模板方法、解释器策略、观察者、命令、状态、责任链、访问者、中介者、备忘录、迭代器

注:类适配器模式需要多重继承,在 Java/C# 等单继承语言中不常用,通常用对象适配器替代。

简单记忆口诀:
类模式靠继承,静态绑死;对象模式靠组合,动态灵活。

Built with LogoFlowershow