创建型 builder模式
场景
- 例如,Word的另存为功能,可以选择将文件存储为doc、docx、pdf、txt等格式
适配
- 当创建负责对象的算法应该独立于该对象的组成部分以及它们的装配方式时
- 当构造过程必须允许被构造的对象有不同的表示时
角色
- Builder 创建一个Product对象的各个部件指定抽象接口
- ConcreteBuilder 定义并明确它所创建的表示 提供一个检索对象的接口
- Director 构造一个使用Builder接口的对象
- Product 包含了定义组成部件的类,包括将这些部件装配成最终产品的接口
协作
- 用户类创建Director对象,并用它想用的Builder对象进行配置
- Director对象控制想要生成的产品部件,并将部件生成指令传递给Builder
- Builder生产组成产品的部件,并将部件组装到产品中
- 用户类从生成器类中获取产品
特点
- 你可以改变一个产品的内部表示
- 构造代码和表示代码分开
- 构造过程进行更精细的控制
实现
// doc、docx、txt、pdf等类型文件的超类
public class FormattedFile {}
// 文件格式转换父类
public class FileFormatConverter {}
// 格式转换继承 和具体实现 TxtFormatConverter
public class TxtFormatConverter extends FileFormatConverter {}
// 格式转换继承 和具体实现 PdfFormatConverter
public class PdfFormatConverter extends FileFormatConverter {}
// 调用
public class UseFormatConverter {}