2020-07-08
建造者模式
建造者模式中的角色
- 目标类(产品类)
通常实现了模板方法模式,有模板方法和基本方法 - 抽象建造者
- 建造者
实现抽象建造者定义的所有方法 - 导演类
建造者模式将复杂对象的构建逻辑从对象本身抽离了出来,这样能够简化复杂的对象。建造者关注目标类的构建过程,目标类关注合法实例的业务本身。在实例化目标类前,确保得到的是一个有效的对象,并且不会让构建逻辑出现在目标类本身。建造者构建类对象的过程通常是分步骤的。
建造者类一般有返回类型为目标类的方法,用于获取目标类实例,还有对目标类中的属性或方法的进行操作的方法,通常会在这种方法中调用目标类中相应的方法或相应属性的get/set方法
个人观点
建造者继承或实现抽象建造者,在要实现的方法中调用目标类中对应的方法。它们之间的关系与适配器模式中的目标类(目标接口)、适配器、现有类的关系很像,抽象建造者对应适配器模式中的目标类(目标接口),建造者对应适配器,建造者模式中的目标类对应适配器模式中的现有类。
部件或零件——目标类中的方法
装配——调用
使用场景
- 相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式
- 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式
- 目标类非常复杂,或者目标类中的方法调用顺序不同产生了不同的效能
- 在对象创建过程中会使用到系统中的一些其他对象,这些对象在目标对象的创建过程中不易得到时,也可以采用建造者模式封装该对象的创建过程。这种场景只能是一个补偿方法,因为一个对象不容易获得,而在设计阶段竟然没有发觉,而要通过创建者模式柔化创建过程,本身已经违反设计的最初目标
参考文献
《Java设计模式(第二版)》
《设计模式之禅》