Java设计模式-建造者模式

文章目录

6、建造者模式

属于创建型模式。

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(举例:就是要创建跳舞机器人和创建唱歌机器人,我们只需更建造者说我们需要跳舞机器人,它就会给我们创建跳舞机器人,创建唱歌机器人同理,这就是构建与表示分离,用同样的构建过程创建不同的表示。)

在这里插入图片描述

与工厂模式的区别是:建造者模式更加关注于零件装配的顺序,一般用来创建更为复杂的对象。

建造者模式最重要的就是Director(领导者),规定了建造的顺序。

优点:

  1. 易于扩展。想要唱歌机器人只要单独将这个类与跳舞机器人建好后,交给Director去创建。
  2. 代码解耦,模块化,方便维护。可以使用相同的创建过程获得不同 的产品。

缺点:

  1. 产品必须有较多的共同点,限制了使用范围。

以机器人为例:
在这里插入图片描述

public class Robbot {   //机器人实体
    private String head;
    private String boby;
    private String hand;

    public String getHead() {
        return head;
    }

    public void setHead(String head) {
        this.head = head;
    }

    public String getBoby() {
        return boby;
    }

    public void setBoby(String boby) {
        this.boby = boby;
    }

    public String getHand() {
        return hand;
    }

    public void setHand(String hand) {
        this.hand = hand;
    }
}

//创建机器人接口
public interface IBuildRobot {
    public void buildHead();
    public void buildBoby();
    public void buildHand();
    public Robbot createRobbot();   
}

// 跳舞机器人创建者
public class DanceRobotBuilder implements IBuildRobot {
    private Robbot robbot;

    public DanceRobotBuilder() {
        this.robbot = new Robbot();
    }

    @Override
    public void buildHead() {
        robbot.setHead("写入跳舞程序");
    }

    @Override
    public void buildBoby() {
        robbot.setBoby("钛合金身体");
    }

    @Override
    public void buildHand() {
        robbot.setHand("钛合金手");
    }

    public Robbot createRobbot() {
        return robbot;
    }
}

//唱歌机器人创建者
public class SingRobotBuilder implements IBuildRobot{
    Robbot robbot;

    public SingRobotBuilder() {
        this.robbot = new Robbot();
    }

    @Override
    public void buildHead() {
        robbot.setHead("写入唱歌程序");
    }

    @Override
    public void buildBoby() {
        robbot.setBoby("彩色钛合金身体");
    }

    @Override
    public void buildHand() {
        robbot.setHand("彩色钛合金手");
    }

    @Override
    public Robbot createRobbot() {
        return robbot;
    }
}

建造者模式最重要的就是领导者,如下:

//领导者,指定了建造机器人的顺序
public class Director {
    public Robbot build(IBuildRobot iBuildRobot){
        iBuildRobot.buildHead();
        iBuildRobot.buildHand();
        iBuildRobot.buildBoby();
        return iBuildRobot.createRobbot();
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        Director director = new Director();  //指挥者
        //跳舞机器人
        Robbot danceRobot = director.build(new DanceRobotBuilder());
        System.out.println(danceRobot.getHead());
        System.out.println(danceRobot.getHand());
        System.out.println(danceRobot.getBoby());

        //唱歌机器人
        Robbot singRobot = director.build(new SingRobotBuilder());
        System.out.println(singRobot.getHead());
        System.out.println(singRobot.getHand());
        System.out.println(singRobot.getBoby());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值