美文网首页
建造器模式

建造器模式

作者: 那年23 | 来源:发表于2019-01-05 13:10 被阅读6次

概念

  建造器模式,是一种使用多个简单对象构造成一个复杂对象的创建型模式。当然,我首先想到的就是Android 里面AlertDialog的创建。利用了AlertDialog.builder的方式,不过这里讲的建造器模式略微有些不同。

角色

抽象建造者:提供了一个创建产品Product的抽象方法以及build方法。
具体建造者:继承抽象建造者,并实现方法,以及提供一个生成Product的方法。
产品:具体的对象。
指挥者:用于创建的具体过程的管理。

let's look the code

  这里假设Human的生产为例。

产品
public class Human {
    private String heard;
    private String body;
    private String foot;

    public String getHeard() {
        return heard;
    }

    public void setHeard(String heard) {
        this.heard = heard;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getFoot() {
        return foot;
    }

    public void setFoot(String foot) {
        this.foot = foot;
    }

    @Override
    public String toString() {
        return "Human [heard=" + heard + ", body=" + body + ", foot=" + foot + "]";
    }

}
抽象建造者

  提供了一系列的创建方法。

public abstract class IBuilder {
    protected Human human = new Human();

    public abstract void createHeard();

    public abstract void createBody();

    public abstract void createFoot();

    public Human build() {
        return human;
    }
}
具体建造者

  boy:

public class BoyBuilder extends IBuilder {

    @Override
    public void createHeard() {
        human.setHeard("Boy's heard");
    }

    @Override
    public void createBody() {
        human.setBody("Boy's body");
    }

    @Override
    public void createFoot() {
        human.setFoot("Boy's foot");
    }

}

  girl:

public class GirlBuilder extends IBuilder {

    @Override
    public void createHeard() {
        human.setHeard("Girl's heard");
    }

    @Override
    public void createBody() {
        human.setBody("Girl's body");
    }

    @Override
    public void createFoot() {
        human.setFoot("Girl's foot");
    }

}
指挥者

  这里实现了步骤的管理,当然也可以结合策略模式,来提供不同的建造步骤。

public class Matrix {
    private IBuilder iBuilder;

    public Matrix(IBuilder iBuilder) {
        this.iBuilder = iBuilder;
    }

    public void setiBuilder(IBuilder iBuilder) {
        this.iBuilder = iBuilder;
    }

    public Human builder() {
        iBuilder.createHeard();
        iBuilder.createBody();
        iBuilder.createFoot();
        return iBuilder.build();
    }
}
客户端测试类
public class BuildClient {
    public static void main(String[] args) {
        Matrix matrix = new Matrix(new BoyBuilder());
        Human human = matrix.builder();
        System.out.println(human.toString());
    }
}
结果
总结一下

  上面例子我们也发现了建造器模式和抽象工厂模式的不同,建造器模式主要是管理建造步骤的。而且各个建造者是独立的。而这个建造器模式和AlertDialog的使用的不同点呢,其实也就是把具体单个Item的创建给暴露出来了。
优点:建造者独立,易扩展。

缺点:产品必须有共同点,限制了范围。

相关文章

  • 建造器模式

    概念   建造器模式,是一种使用多个简单对象构造成一个复杂对象的创建型模式。当然,我首先想到的就是Android ...

  • 创建型模式:06-建造者模式

    类图 示例代码: 特殊建造者模式(构建器)

  • 【iOS】设计模式

    1。建造型模式Creational 单例模式Singleton 2。结构型模式Structural MVC 装饰器...

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • Java设计模式 - 构造器模式

    一、构造器模式 构造器模式,也被称为建造者、生成器模式,是设计模式中比较容易理解的模式之一。 定义:将一个复杂对象...

  • Java应用小实例总结

    1.1 建造者模式 【静态内部类的引用------Builder构建器】 《 publicstaticclass...

  • java设计模式之Builder建造者模式

    java设计模式之Builder建造者模式 当遇到多个构造器参数时,考虑用构造器模式。里面有个商品的例子。这让我想...

  • Java设计模式简略图示

    工厂模式 抽象工厂模式 单例模式 建造者模式 原型模式 适配器模式 桥接模式 过滤器模式 组合模式 装饰器模式 外...

  • 建造者模式

    建造者模式的存在的原因是为了解决重叠构造器模式与JavaBean模式的不足todo....

  • 设计模式之建造者模式

    建造者模式 最终得到的商品类,A,B,C假想成商品的重要组成部分 抽象建造者 A商品的构造器 B商品的构造器 商品...

网友评论

      本文标题:建造器模式

      本文链接:https://www.haomeiwen.com/subject/ugurrqtx.html