009、建造者模式

一、UML图

二、实例

1、Product

package com.designPattern.builder;

/**
 * Created by ZhangJintao on 2020/3/12.
 */
public class Automobile {
    private String window;
    private String whell;
    private String seat;
    private String color;

    public String getWindow() {
        return window;
    }

    public void setWindow(String window) {
        this.window = window;
    }

    public String getWhell() {
        return whell;
    }

    public void setWhell(String whell) {
        this.whell = whell;
    }

    public String getSeat() {
        return seat;
    }

    public void setSeat(String seat) {
        this.seat = seat;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public String toString() {
        return "Automobile{" +
                "window='" + window + '\'' +
                ", whell='" + whell + '\'' +
                ", seat='" + seat + '\'' +
                ", color='" + color + '\'' +
                '}';
    }
}

2、Builder

package com.designPattern.builder;

/**
 * Created by ZhangJintao on 2020/3/12.
 */
public abstract class AutomobileBuilder {
    public abstract void buildWindow();
    public abstract void buildWhell();
    public abstract void buildSeat();
    public abstract void buildColor();

    public abstract Automobile getAutomobile();
}

3、ConcreteBuilder

package com.designPattern.builder;

/**
 * Created by ZhangJintao on 2020/3/12.
 */
public class BusBuilder extends AutomobileBuilder{
    private Automobile automobile = new Automobile();

    @Override
    public void buildWindow() {
        automobile.setWindow("我是公共汽车的窗子");
    }

    @Override
    public void buildWhell() {
        automobile.setWindow("我是公共汽车的轮子");
    }

    @Override
    public void buildSeat() {
        automobile.setWindow("我是公共汽车的座位");
    }

    @Override
    public void buildColor() {
        automobile.setWindow("我是公共汽车的颜色");
    }


    @Override
    public Automobile getAutomobile() {
        return automobile;
    }
}
package com.designPattern.builder;

/**
 * Created by ZhangJintao on 2020/3/12.
 */
public class CarBuilder extends AutomobileBuilder {
    private Automobile automobile = new Automobile();

    @Override
    public void buildWindow() {
        automobile.setWindow("我是小汽车的窗子");
    }

    @Override
    public void buildWhell() {
        automobile.setWhell("我是小汽车的轮子");
    }

    @Override
    public void buildSeat() {
        automobile.setSeat("我是小汽车的座位");
    }

    @Override
    public void buildColor() {
        automobile.setColor("我是小汽车的颜色");
    }


    @Override
    public Automobile getAutomobile() {
        return automobile;
    }
}

4、 Director

package com.designPattern.builder;

/**
 * Created by ZhangJintao on 2020/3/12.
 */
public class AutomobileDirector {
    AutomobileBuilder automobileBuilder = null;

    public AutomobileDirector(AutomobileBuilder automobileBuilder) {
        this.automobileBuilder = automobileBuilder;
    }


    public void constract(){
        automobileBuilder.buildColor();
        automobileBuilder.buildSeat();
        automobileBuilder.buildWhell();
        automobileBuilder.buildWindow();
    }
}

5、Main

package com.designPattern.builder;

/**
 * Created by ZhangJintao on 2020/3/12.
 */
public class main {
    public static void main(String[] args) {
        CarBuilder carBuilder = new CarBuilder();

        AutomobileDirector automobileDirector = new AutomobileDirector(carBuilder);
        automobileDirector.constract();

        System.out.println(carBuilder.getAutomobile().toString());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值