跳转至

ch9 增加抽象层级,隔离复杂变化

1. 通过封装增加隔离

基于接口编程,不依赖具体类,从确定性的对象到多态性的对象,使同一段代码(算法)能处理不同性质的对象,增加程序应对未来变化的灵活性。该设计模式被称为简单工厂模式。

封装多态对象的选择与创建:先隔离开(借助封装),再徐图之(增加变化)

  • 将创建多态对象中的选择性剥离出来,作为控制创建过程的参数。从使用具体类的类型名称来直接控制多态对象的创建,转变成使用变量和符号来间接控制多态对象的创建。
  • 设计一个类封装多态对象的选择和创建过程。

在简单工厂模式中,生成哪种对象是由工厂类的接口根据传入参数来决定的。此时,生成对象的类名是看得见的(被硬编码在源程序中)。

2. 增加抽象层

若无法确定多态对象的具体类,再增加一层抽象层,从工厂类派生一个子类,把棘手的问题(使用具体类名创建产品对象)交给子类去解决。对这个子类而言,它的实现者(程序员、代码上下文环境)是知道具体产品的类名的,因而可以创建相应对象。该设计模式被称为工厂方法模式。

通过派生引入的抽象层增强了灵活性,一方面使基类能将无法决定的事情交由子类去确定,另一方面也使基类提供的接口不受某些信息的约束。

3. 相互关联对象的创建

将关联对象的生成接口集成到单个创建类中,在实现该类时保证各个对象之间的关联性符合要求。该设计思路被称为抽象工厂模式。