构建者模式(Builder Pattern)

  构建者模式:将一个复杂对象的构造与它的表示分离,使同样的构造可以构造出不同的表示,这样的设计模式被称为构建者模式。

  构建者模式主要需要以下几个部分组成:

    1、需要构建的对象(例如Animal对象)

    2、构建对象的实现类(例如AnimalBuilder对象),在该类中需要提供三种方法

      (1)私有的构建对象(Animal)

      (2)共有的为构建对象赋值的方法

      (3)共有的构建对象方法(例如build方法,返回一个Animal对象)

      (4)共有的静态创建构建者方法(非必需)

  接下来就直接上代码:

package com.lcl.galaxy.design.pattern.builder;

import lombok.Data;

@Data
public class Animal {

    private String eye;

    private String ears;

    private String nose;

    private String hair;

}
package com.lcl.galaxy.design.pattern.builder;

public class AnimalBuilder {

    private Animal animal = new Animal();

    public static AnimalBuilder builder(){
        return new AnimalBuilder();
    }

    public AnimalBuilder eye(String eye){
        animal.setEye(eye);
        return this;
    }

    public AnimalBuilder ears(String ears){
        animal.setEars(ears);
        return this;
    }

    public AnimalBuilder nose(String nose){
        animal.setNose(nose);
        return this;
    }

    public AnimalBuilder hair(String hair){
        animal.setHair(hair);
        return this;
    }

    public Animal build(){
        return animal;
    }

}

  测试方法

    @Test
    public void builderTest(){
        Animal animal = AnimalBuilder.builder().eye("blue").hair("yellow").build();
        log.info("=========== {} =========== ", JSON.toJSONString(animal));
    }

  构建者模式与工厂模式的区别:工厂模式是创建千篇一律的对象,而构建者模式是可以根据自身需求创建出自定义的对象

  构建者与seter方法或构造方法的区别:构造方法我们需要关注构造函数的传参顺序,而构建者模式不需要关心。setter方法是先创建一个对象,然后再set值,在没有完全赋值完成之前,就可能会被其他地方使用,而构建者模式,是必须等调用build方法后才会返回构建完成的对象。

原文地址:https://www.cnblogs.com/liconglong/p/14171549.html