Java建造者模式,用代码体验LEGO的快乐

这篇具有很好参考价值的文章主要介绍了Java建造者模式,用代码体验LEGO的快乐。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文主要讲述Java设计模式中的建造者模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。

一.什么是建造者模式

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

二.生活中的建造者模式

1.音乐

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

Java建造者模式,用代码体验LEGO的快乐

2.国粹

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

3.LEGO

乐高(LEGO),知名的老少皆宜的玩具,乐高积木是由一块块的小积木拼接成一个个的成品模型,根据每个人的动手能力和想象力拼出来的成品也会不一样。由不同积木组合而成的乐高成品就像是设计模式中的建造者模式。
Java建造者模式,用代码体验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;

/*
 * @author:Ran
 *		指挥者
 *      	乐高的指挥者
 */
public class LegoDirector {
    /**
     * 创建乐高对象里的的具体内容
     * @param builderLego
     * @return
     */
    public Lego createLego(BuilderLego builderLego){
        //创建头部
        builderLego.buildHead();
        //创建躯干
        builderLego.buildBody();
        //创建手部
        builderLego.buildHand();
        //创建脚部
        builderLego.buildFoot();
        //返回已构建完毕的乐高对象
        return builderLego.getLego();
    }
}

最后通过建造者模式来创建我们需要的乐高对象。

package com.qianfeng.ran;

/*
 * @author:江帅
 *
 *      客户端
 */
public class Demo {
    public static void main(String[] args) {
        //创建管理者
        LegoDirector legoDirector = new LegoDirector();
        //-------创建钢铁侠的乐高模型------
        Lego lego1 = legoDirector.createLego(new IronManLego());
        //执行结果: 
        //Lego{head='钢铁手套(电弧脉冲炮)', body='钢铁战衣(集束炮)', hand='钢铁头盔(AI系统)', foot='钢铁战靴(推进器)'}
        System.out.println(lego1.toString());

        //-------创建高达的乐高模型--------
        Lego lego2 = legoDirector.createLego(new GunDamLego());
        //执行结果:
        //Lego{head='高达手部(盾牌)', body='高达躯干(大口径光束加农炮)', hand='高达头部(驾驶舱)', foot='高达腿部(推进器)'}
        System.out.println(lego2.toString());
    }
}

四.总结

通过建造者模式创建对象,封装性和扩展性会很好,客户端不需要知道产品内部组成的细节。但是每个产品组成部分必须相同,限制了使用范围,比如想创建个房子的乐高,那组合部分跟钢铁侠和高达都不同就创建不出来了。因此必须是相同的内部组成结构才会选择使用建造者模式。

下一章将带大家学习身外身法之术(设计模式之原型模式)。


以上就是我们本篇的全部内容啦,本期以LEGO为例,为大家讲解了Java设计模式中的建造者模式,不知道大家是否学会了呢~

编程并不枯燥,如果有技术类问题,欢迎大家和我们一起交流讨论!文章来源地址https://www.toymoban.com/news/detail-493636.html

到了这里,关于Java建造者模式,用代码体验LEGO的快乐的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java设计模式之 - 建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它通过将对象的构建过程分离出来,使得同样的构建过程可以创建不同的表示形式。 简单来说,建造者模式允许你按步骤创建复杂的对象,同时将对象的构建与其表示分离。 主要解决的问题是当创建一个复杂对象时,如果

    2024年02月16日
    浏览(56)
  • 03-JAVA设计模式-建造者模式

    建造者模式(Builder Pattern)是一种对象构建的设计模式,它允许你通过一步一步地构建一个复杂对象,来隐藏复杂对象的创建细节。 这种模式将一个复杂对象的构建过程与其表示过程分离,使得同样的构建过程可以创建不同的表示。命名建议以Builder结尾,以达到见名之意。

    2024年04月15日
    浏览(62)
  • Java 设计模式之建造者模式

            在软件开发中,设计模式是一种被广泛使用的解决问题的方法。设计模式帮助我们更好地组织和管理代码,提供了一种可靠和可复用的设计方案。在本篇文章中,我们将重点介绍一种常用的设计模式——建造者模式,并通过一个实际的案例来演示其应用。     

    2024年02月13日
    浏览(42)
  • Java设计模式之一:建造者模式

    目录 一、什么是建造者模式 二、建造者模式如何使用 三、建造者模式的优势和应用场景 Java建造者模式是一种创建对象的设计模式,它通过将对象的构造过程分离出来,使得同样的构建过程可以创建不同的表示。建造者模式适用于创建复杂对象,它将对象的构建过程分解成

    2024年02月13日
    浏览(53)
  • java 实现建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,用于创建一个复杂对象,将对象的构建过程与其表示分离,以便可以使用相同的构建过程来创建不同的表示。在Java中,可以使用建造者模式来构建具有多个属性的对象。下面是一个简单的Java实现建造者模式的示例: 首先,

    2024年02月09日
    浏览(34)
  • 【JAVA】建造者模式

    建造者模式是一种创建型设计模式,用于将对象的构建过程与其表示分离。它可以通过一步一步地构建复杂对象,使得相同的构建过程可以创建不同的表示。 在Java中,建造者模式通常由以下几个组件组成: 产品:表示被构建的复杂对象。该类通常包含多个属性和方法。 抽象

    2024年02月11日
    浏览(35)
  • Java 建造者模式详解

    建造者模式是Java中一种创建型设计模式,它的主要目的是将一个复杂对象的构建过程分解为多个简单对象的构建过程,并且使这些构建过程按照一定的顺序进行组装,最终实现对复杂对象的创建。本文将详细介绍Java中的建造者模式,包括它的定义、结构、实现方法以及应用

    2024年02月04日
    浏览(34)
  • java建造者模式

    在Java中实现建造者模式,可以通过创建一个建造者类(Builder)和一个产品类(Product)来完成。下面是一个简单的示例: 首先,我们创建一个产品类(Product),其中包含一些属性和对应的 getter 方法: public class Product {     private String property1;     private String property2;     /

    2024年02月16日
    浏览(58)
  • Java与设计模式(6):建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它允许你逐步构造复杂对象。该模式将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的核心思想是将一个复杂对象的构建过程分解为多个简单的步骤,通过一系列的步骤来逐步构建对

    2024年02月11日
    浏览(39)
  • Java特性之设计模式【建造者模式】

    概述 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的 主要解决 :主要解决在软件系统中,有

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包