建造者模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建造者模式相关的知识,希望对你有一定的参考价值。
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 |
- 可以将Director省略掉,将指挥者的construct方法放到抽象建造者中定义。
abstract class AnmBuilder {
protected Anm anm= new Anm ();
public abstract void buildName();
public abstract void buildAge();
public Anm construct() {
this.buildName();
this.buildAge();
return anm;
}
}
public static Actor construct(AnmBuilder ab) {
this.buildName();
this.buildAge();
return anm;
}
- 钩子方法:上述结构中,产品组件的构造和产品的组装步骤都在指挥者内定义好了,难免有些不够灵活。通过引入构字方法,让具体的构造者可以在一定范围内反控制构造过程,增加灵活性。例如在上例的抽象构造者中定义getBuildAge方法,来控制是否构造Age组件,则在指挥者中可以这样实现反控制:
public static Actor construct(AnmBuilder ab) {
this.buildName();
if(ab.getBuildAge()) {
this.buildAge();
}
return anm;
}
优点:
- 将客户端和具体构造细节隔离开,创建和使用解耦。
- 具体创建者间相互独立,增加新产品无需改动原有构造者。
- 产品往往需要拥有较大的共同点,如果差异性很大,建造者模式很难处理。
- 如果产品内部复杂多变,具体建造者的数量和复杂度都会很大,使系统复杂化。
- 产品有多个属性,并且属性间的构造有一定依赖和逻辑性
- 不同产品件有较高的共同点,可以抽象出一个相对统一的组装过程(指挥者)。
- 希望将对象的构造和使用解耦,隔离创建和使用,以便分工做系统模块更加清晰。
以上是关于建造者模式的主要内容,如果未能解决你的问题,请参考以下文章