5.建造者模式
2019-07-25 17:38 zhongj 阅读(222) 评论(0) 编辑 收藏 举报- 一、角色
- Product(产品角色):具体的产品对象
- Builder(抽象建造者):创建一个Product对象的各个部件指定的抽象接口
- ConcreteBuilder(具体建造者):实现抽象接口,构建和装配各个部件
- Director(指挥者):构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程
- 二、适用场景
- 隔离复杂对象的创建和使用,相同的方法,不同执行顺序,产生不同事件结果
- 多个部件都可以装配到一个对象中,但产生的运行结果不相同
- 产品类非常复杂或者产品类因为调用顺序不同而产生不同作用
- 初始化一个对象时,参数过多,或者很多参数具有默认值
- Builder模式不适合创建差异性很大的产品类,产品内部变化复杂,会导致需要定义很多具体建造者类实现变化,增加项目中类的数量,增加系统的理解难度和运行成本
- 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性
- 三、实例
- 图-1中的Meal是产品角色,MealBuilder是抽象建造者角色,MealA和MealB是具体建造者角色,KFCWaiter是指挥者角色,这是一个生成肯德基套餐产品的实例,KFCWaiter依赖抽象建造者实现不同套餐产品对象生成,KFCWaiter实例注入不同的具体建造者实现不同套餐产品实例的生成
- 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/builder
图-1