小工具      在线工具  汉语词典  css  js  c++  java

Java Builder 模式

Java 额外说明

收录于:93天前

package com.JXWork.test;

/**
 * @auther: TF12778
 * @date: 2020/3/21 13:17
 * @description:
 */

public final class Car {
    /**
     * 必需属性
     */
    final String carBody;//车身
    final String tyre;//轮胎
    final String engine;//发动机
    final String aimingCircle;//方向盘
    final String safetyBelt;//安全带
    /**
     * 可选属性
     */
    final String decoration;//车内装饰品

    /**
     * car 的构造器 持有 Builder,将builder制造的组件赋值给 car 完成构建
     * @param builder
     *
     */
    public Car(Builder builder) {
        this.carBody = builder.carBody;
        this.tyre = builder.tyre;
        this.engine = builder.engine;
        this.aimingCircle = builder.aimingCircle;
        this.decoration = builder.decoration;
        this.safetyBelt = builder.safetyBelt;
    }

    public static final class Builder {
        String carBody;
        String tyre;
        String engine;
        String aimingCircle;
        String decoration;
        String safetyBelt;

        public Builder() {
            this.carBody = "宝马";
            this.tyre = "宝马";
            this.engine = "宝马";
            this.aimingCircle = "宝马";
            this.decoration = "宝马";
        }

        /**
         * 实际属性配置方法
         * @param carBody
         * @return
         *
         */
        public Builder carBody(String carBody) {
            this.carBody = carBody;
            return this;
        }

        public Builder tyre(String tyre) {
            this.tyre = tyre;
            return this;
        }

        public Builder safetyBelt(String safetyBelt) {
            if (safetyBelt == null) throw new NullPointerException("没系安全带,你开个毛车啊");
            this.safetyBelt = safetyBelt;
            return this;
        }

        public Builder engine(String engine) {
            this.engine = engine;
            return this;
        }

        public Builder aimingCircle(String aimingCircle) {
            this.aimingCircle = aimingCircle;
            return this;
        }

        public Builder decoration(String decoration) {
            this.decoration = decoration;
            return this;
        }

        /**
         * 最后创造出实体car
         * @return
         *
         */
        public Car build() {
            return new Car(this);
        }
    }

    public static void main(String[] args) {

        /**
         * 普通车辆
         */
        Car publicCar = new Builder().build();
        System.out.println(publicCar);

        /**
         * 定制的车辆
         */
        Car car = new Builder().carBody("大众车身")
                .tyre("大众品牌")
                .engine("波音")
                .decoration("比亚迪")
                .aimingCircle("宝骏")
                .safetyBelt("特斯拉")
                .build();
        System.out.println(car);
    }
}

参考:Java 构建器模式

. . .

相关推荐

额外说明

Spring事务全面解析——什么是声明式事务

Spring事务详解 事物的基本特性(ACID) A: 原子性(atomicity) 事物中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事物的失败; C: 一致性(consistency) 事物结束后系统状态是一致的; I: 隔离性(is

额外说明

《MySQL入门教程》第18章 连接查询

文章目录 18.1 连接查询 18.2 内连接 18.3 左外连接 18.4 右外连接 18.5 全外连接 18.6 交叉连接 18.7 自然连接 18.8 自连接 18.9 多表连接 18.1 连接查询 关系型数据库通常采用规范化的设计方式,将不同的实

额外说明

Android Compose Button defaultButtonColors

Android Compose Button defaultButtonColors 本文最新更新地址 https://gitee.com/chenjim/chenjimblog 发现问题 最近看 Android Compose 相关资料发现如下代码 c

额外说明

FineCMS-v5.0.1漏洞审计

FineCMS漏洞审计 一.漏洞复现 1.文件上传 上传php一句话(改成png或者jpg),上传后把png改回php.这里上传图片在将一句话16进制编码加进去,后改文件类型也可以。 他这里文件保存路径其实是根据用户的uid来的,抓包可以看到uid. 直

额外说明

简易GIt-----SFile 10秒上手

SFile 10秒上手 sfile简介 添加文件 (第一次添加文件为根文件,后续该文件所有增删改都会应用于根文件) sfile add fileonename filetwoname filethreename ... 拉取filesystem 中的f

额外说明

第七章:Django开发中数据库的高级使用

一、关于Django中的字段方法名与MySQL中字段匹配 MySQL字段 Django方法 描述 使用频率 int IntegerField 常用 samllint SmallIntegerField varchar CharField 要指定长度 常用

额外说明

在ASP.NET中使用NHibernate

  关键还是会话工厂的建立和NHibernate的Session的管理问题。 会话工厂仍然是使用singleton模式建立。而session管理则和Wndows Form不同:Wndows Form可以保持长连接,以获得比较好的用户体验,因而可以使用Th

额外说明

计算机丢失或损坏atl90.dll如何解决?

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个atl90.dll文件进行安装(前提是找到适合的版本),当我们

额外说明

smtp gmail_如何使用Gmail SMTP服务器在WordPress中发送电子邮件

短信邮件 您在从 WordPress 网站发送电子邮件时遇到问题吗? 您在从 WordPress 网站发送电子邮件时遇到问题吗? 解决此问题的一种简单方法是使用 Gmail SMTP 服务器发送 WordPress 电子邮件。 解决这个问题的一个简单方法

额外说明

wordpress启动_清单:启动WordPress网站前要做的11件事

WordPress 启动 您准备好启动您的 WordPress 网站了吗?网络上每天都会出现数以千计的新网站。这就是为什么您要确保您的网站从一开始就脱颖而出并闪闪发光。在本文中,我们准备了一份方便的清单,列出了在启动 WordPress 网站之前应该做的

ads via 小工具