小白谈谈建造者模式

概念

通过多个简单的对象一步一步构建成一个复杂的对象,如果在创建一个对象的时候,需要传递很多参数来实例化,那么使用这种模式,就可以很容易就实现对象的创建,还可以确定建造的顺序。


实现

接下来以一个简单的案例进行介绍,比如我们现在需要建造一个房子,一个房子需要有柱子,地基,墙壁,屋顶,而且这个是有先后顺序的,先建地基->柱子->墙壁->屋顶,具体实现如下:

代码实现:
定义一个屋子的类:

public class House {

    //屋顶
    private String roof;

    //地基
    private String base;

    //墙壁
    private String wall;

    //柱子
    private String pillar;
}

定义一个设计蓝图的接口:

/**
 * 定义设计蓝图
 */
public interface HouseBuild {

    //建造房顶
    public HouseBuild  buildRoot();

    //建造墙壁
    public HouseBuild buildWall();

    //建造地基
    public HouseBuild buildBase();

    //建造柱子
    public HouseBuild buildPillar();

    //整体建造屋子
    public House build(); 
}

工人们拿到这个蓝图,是具体建造的实施者:

/**
 * 拿到设计蓝图具体实现的
 */
public class Worker implements HouseBuild {

    //初始一个屋子
    House house = new House();

    @Override
    public HouseBuild buildRoot() {
        System.out.println("建造房顶");
        return this;
    }

    @Override
    public HouseBuild buildWall() {
        System.out.println("建造墙壁");
        return this;
    }

    @Override
    public HouseBuild buildBase() {
        System.out.println("建造地基");
        return this;
    }

    @Override
    public HouseBuild buildPillar() {
        System.out.println("建造柱子");
        return this;
    }

    @Override
    public House build() {
        return house;
    }
}

最后进行测试:

/**
 * 在实际案例中,建造屋子是有一定的顺序的是,先建地基->柱子->墙壁->屋顶
 * 所以下面的代码执行顺序也要进行规范
 */
public class Main {

    public static void main(String[] args) {

        HouseBuild plan = new Worker();
        House house = plan.buildBase().buildPillar().buildWall().buildRoot().build();
    }
}

实验结果:
在这里插入图片描述


本文的代码:https://pan.baidu.com/s/1bvOF5PncVu2-8yYKBIhPQw
提取码:4fww

发布了48 篇原创文章 · 获赞 0 · 访问量 660

猜你喜欢

转载自blog.csdn.net/weixin_44943485/article/details/105246337
今日推荐