Java建造者模式,用代码体验LEGO的快乐_想要写一个乐高积木模拟搭建程序

建造者模式是23种设计模式中创建型模式的一种,它关注的是对象创建的步骤,将一个复杂的对象抽象出来,一步步地把一个复杂的对象创建出来。

二.生活中的建造者模式

1.音乐

每一首动人的歌曲都是通过由一个个美妙的音符组合而成,使用相同音符但是不同循序组合而成的歌曲也会是不同的歌曲,而这样形成的歌曲就像是设计模式中的建造者模式。

image.png

2.国粹

麻将是中国的国粹。麻将的打法不同地区不一样,个数也不一样,但是总归分为那么几类牌,而不同的牌能够组合成不同的胡牌的牌型,而通过不同的的麻将子形成的胡牌牌型就像是设计模式中的建造者模式。

3.LEGO

乐高(LEGO),知名的老少皆宜的玩具,乐高积木是由一块块的小积木拼接成一个个的成品模型,根据每个人的动手能力和想象力拼出来的成品也会不一样。由不同积木组合而成的乐高成品就像是设计模式中的建造者模式。
在这里插入图片描述

三.建造者模式的实现

接下来以一个人型乐高的模型来举例,用建造者模式来实现。先创建一个产品角色乐高类

package com.qianfeng.ran;

/\*
 \* @author:江帅
 \* 产品角色 
 \* 乐高类
 \*/
public class Lego {
    //头部
    private String head;
    //躯干
    private String body;
    //手部
    private String hand;
    //脚部
    private String foot;

    public String getHead() {
        return head;
    }

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

    public String getBody() {
        return body;
    }

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

    public String getHand() {
        return hand;
    }

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

    public String getFoot() {
        return foot;
    }

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

    @Override
    public String toString() {
        return "Lego{" +
                "head='" + head + '\'' +
                ", body='" + body + '\'' +
                ", hand='" + hand + '\'' +
                ", foot='" + foot + '\'' +
                '}';
    }
}

接下来创建抽象建造者具体建造者钢铁侠乐高类

package com.qianfeng.ran;

/\*\*
 \* @author:江帅
 \*
 \* 抽象建造者
 \* 建造乐高模型的接口,规定创建人型乐高模型的规范
 \*/
public interface BuilderLego {
    //创建头部
    void buildHead();
    //创建躯干
    void buildBody();
    //创建手部
    void buildHand();
    //创建脚部
    void buildFoot();

    /\*\*
 \* 返回创建的乐高模型
 \*/
    Lego getLego();

}


/\*
 \* @author:江帅
 \* 具体建造者
 \* 钢铁侠乐高
 \*/
class IronManLego implements BuilderLego {
    private Lego lego;

    public IronManLego() {
        //创建乐高对象
        lego = new Lego();
    }

    @Override
    public Lego getLego() {
        return lego;
    }

    //------------通过规定的方法完成乐高模型的建造------------

    @Override
    public void buildHead() {
        lego.setHand("钢铁头盔(AI系统)");
    }

    @Override
    public void buildBody() {
        lego.setBody("钢铁战衣(集束炮)");
    }

    @Override
    public void buildHand() {
        lego.setHead("钢铁手套(电弧脉冲炮)");
    }

    @Override
    public void buildFoot() {
        lego.setFoot("钢铁战靴(推进器)");
    }

}

/\*
 \* @author:江帅
 \* 具体建造者
 \* 高达乐高
 \*/
class GunDamLego implements BuilderLego{
    private Lego lego;

    public GunDamLego() {
        //创建乐高对象
        lego = new Lego();
    }

    @Override
    public Lego getLego() {
        return lego;
    }

    //------------通过规定的方法完成乐高模型的建造------------

    @Override
    public void buildHead() {
        lego.setHand("高达头部(驾驶舱)");
    }

    @Override
    public void buildBody() {
        lego.setBody("高达躯干(大口径光束加农炮)");
    }

    @Override
    public void buildHand() {
        lego.setHead("高达手部(盾牌)");
    }

    @Override
    public void buildFoot() {
        lego.setFoot("高达腿部(推进器)");
    }
}

再创建一个指挥者乐高的指挥者类

package com.qianfeng.ran;

/\*
uildHand() {
        lego.setHead("高达手部(盾牌)");
    }

    @Override
    public void buildFoot() {
        lego.setFoot("高达腿部(推进器)");
    }
}

再创建一个指挥者乐高的指挥者类

package com.qianfeng.ran;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值