建造者模式学习

该博客介绍了建造者模式在创建复杂对象,如机器人时的应用。通过定义一个接口Builder来规范机器人的组成部分,然后提供不同的Builder实现类来构建具体的机器人零件。Director类负责组装这些零件,最终构建出机器人A和机器人B。在示例中,展示了如何通过Director组装机器人并打印组装过程。
摘要由CSDN通过智能技术生成

1、建造者模式:适用于创建复杂对象,这些对象有着基本的轮廓,单具体实现又不一样

2、组成:
(1)接口Builder:规定了一个产品由哪些零件组成,类似零件表
(2)Builder的具体实现类:根据零件表建造具体的零件
(3)Director:具体建造者,将各个零件组装到一起

3、以建造一个机器人为例

package 创建型模式.建造者模式;
/**
 * @Author: lxpStu
 * @Date: 2021/10/30/21:54
 * @Description:机器人的各个组成部分抽象(零件表)
 */
public interface Builder {
    /**
     * 头
     */
    void head();

    /**
     * 身体
     */
    void body();

    /**
     * 胳膊
     */
    void arm();

    /**
     * 腿
     */
    void leg();

    /**
     * 脚
     */
    void foot();
}

package 创建型模式.建造者模式.impl;

import 创建型模式.建造者模式.Builder;

/**
 * @Author: lxpStu
 * @Date: 2021/10/30/21:57
 * @Description: 建造机器人A的零件
 */
public class RobotA implements Builder {
    @Override
    public void head() {
        System.out.println("生产机器人A的头");
    }

    @Override
    public void body() {
        System.out.println("生产机器人A的身体");
    }

    @Override
    public void arm() {
        System.out.println("生产机器人A的胳膊");
    }

    @Override
    public void leg() {
        System.out.println("生产机器人A的腿");
    }

    @Override
    public void foot() {
        System.out.println("生产机器人A的脚");
    }
}


package 创建型模式.建造者模式.impl;

import 创建型模式.建造者模式.Builder;

/**
 * @Author: lxpStu
 * @Date: 2021/10/30/21:57
 * @Description: 建造机器人B的零件
 */
public class RobotB implements Builder {
    @Override
    public void head() {
        System.out.println("生产机器人B的头");
    }

    @Override
    public void body() {
        System.out.println("生产机器人B的身体");
    }

    @Override
    public void arm() {
        System.out.println("生产机器人B的胳膊");
    }

    @Override
    public void leg() {
        System.out.println("生产机器人B的腿");
    }

    @Override
    public void foot() {
        System.out.println("生产机器人B的脚");
    }
}

package 创建型模式.建造者模式;

import 创建型模式.建造者模式.impl.RobotA;
import 创建型模式.建造者模式.impl.RobotB;

/**
 * @Author: lxpStu
 * @Date: 2021/10/30/21:59
 * @Description: 建造者:组装机器人
 */
public class Director {

    public void createRobot(){
        Builder ra = new RobotA();
        ra.head();
        ra.body();
        ra.arm();
        ra.leg();
        ra.foot();
        System.out.println("机器人A组装完毕...\n");

        Builder rb = new RobotB();
        rb.head();
        rb.body();
        rb.arm();
        rb.leg();
        rb.foot();
        System.out.println("机器人B组装完毕...");
    }
}

package 创建型模式.建造者模式;

/**
 * @Author: lxpStu
 * @Date: 2021/10/30/22:02
 * @Description: 购买机器人的客户,获取机器人A、B
 */
public class Main {
    public static void main(String[] args) {
        Director director = new Director();
        director.createRobot();
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值