本文主要是介绍设计模式07_建造者,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
注意事项:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。
最核心的是builder和dirctor
director
class Director
{private Builder builder;public Director(Builder builder){this.builder=builder;}//产品构建与组装方法public Product construct(){builder.buildPartA();builder.buildPartB();builder.buildPartC();return builder.getResult();}
}
builder
abstract class Builder
{//创建产品对象protected Product product=new Product();public abstract void buildPartA();public abstract void buildPartB();public abstract void buildPartC();//返回产品对象public Product getResult(){return product;}
}
典型调用:
public static void main(String[] args){Builder builder=new ConcreteBuilder();Director director=new Director(builder);Product product=director.construct();product.show();}
可以看出,直接返回product的是Director,但实际是通过Director内部持有的builder返回
Director通过定义builder方法的不同执行流对过程进行多态(如果需要不同的流程则新定义Director重写)
builder通过对相同执行流程的不同具体实现进行多态(也就是相同执行流不同具体实现则定义builder重写)
例如:
高端车:加工-上漆-装轮胎-洗车(水洗)
一般车: 加工-装轮胎-上漆-洗车(酒精洗)
流程的不同通过不同Director实现。执行的细节不同通过builder实现。
其本质上是一种动作拆分方法Or功能拆分方法,虽然实际用作建造者场景比较少,但后续其他设计模式基本都是类似套路。本质上就是动作拆分,拆分给不同的对象,然后需要重修修改时,只需要在合适的层次重写另一个对象就行了(避免了对旧对象的改动)。
这篇关于设计模式07_建造者的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!