设计模式(3)builder

news/2024/10/6 21:45:29 标签: 设计模式, java, 开发语言

需求: 对于复杂的对象,我们只需要 通过 设置一些参数,就可以得到相对应的 实例。

简单来说, 需求就是用一个类  通过方法返回一个  新建的对象,而且可以通过方法去设置这个对象

public interface CarBuilder {
    void setCarName(String name);
    void setCarModel(String model);
    Car getCar();
}

 这个类有一个 内部私有 car, 通过getCar ,输出 car的实例。

package com.example.builder;

public class CarBuilderImp implements CarBuilder {
    private Car car = new Car ();
    @Override
    public void setCarName( String name) {
        car.setName(name);
    }

    @Override
    public void setCarModel(String model) {
        car.setModel( model);

    }

    @Override
    public Car getCar() {
        return car;
    }
}
package com.example.builder;

import android.util.Log;

import androidx.annotation.NonNull;

public class Car {
    String name;
    String model;

    public void setName(String name) {
        this.name = name;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getName() {
        return name;
    }

    public String getModel() {
        return model;
    }

    @NonNull
    @Override
    public String toString() {
        Log.d("Car"+"LIU","name = " + this.name + "model = " + this.model);
        return this.name + this.model;
    }

}

example

        CarBuilderImp carBuilderImp = new CarBuilderImp();
        carBuilderImp.setCarModel("X1");
        carBuilderImp.setCarName("BMW");
        Car car = carBuilderImp.getCar();


2024-10-05 11:53:36.966 18346-18346/com.example.builder D/CarLIU: name = BMWmodel = X1

参考:百度安全验证

https://github.com/youlookwhat/DesignPattern#11-%E5%BB%BA%E9%80%A0%E8%80%85%E6%A8%A1%E5%BC%8F


http://www.niftyadmin.cn/n/5692190.html

相关文章

无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享

你知道怎么下载无水印视频素材吗?今天小编就给大家推荐十个高清无水印视频素材下载的网站,如果你也是苦于下载高清无水印的短视频素材,赶紧来看看吧~ 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…

人工智能专业就业方向与前景

随着产业结构升级的持续推进,未来行业领域对于人工智能专业人才的需求量会逐渐增加,一部分高校也开始陆续在本科阶段开设人工智能专业,以缓解人工智能领域人才缺口较大的问题。下面是小编整理的人工智能专业就业方向与前景,欢迎阅…

Pytest 使用Pycharm右键直接运行测试脚本正常,控制台命令pytest运行收集不到用例无法正常测试 no tests ran in 0.01s

all.py脚本内容 import pytest if __name__ __main__:pytest.main([-sv, ./testcase,-n3])print(你好世界)说明 这个文件我命名为all.py,内容如上,右键使用pycharm运行all.py时,testcase目录下的3个pytest测试文件的用例均正常运行&#x…

【Spring】“请求“ 之传递 JSON 数据

文章目录 JSON 概念JSON 语法JSON 的语法JSON 的两种结构 JSON 字符串和 Java 对象互转JSON 优点传递 JSON 对象 JSON 概念 JSON:JavaScript Object Notation【JavaScript 对象表示法】 JSON 就是一种数据格式,有自己的格式和语法,使用文本…

AtCoder Beginner Contest 374 (E + F)

AtCoder Beginner Contest 374 E 对于机器 s s s 和机器 t t t , 二分过程检查每一项工艺的过程中。 一定有一个机器的生产数量 < A B < A\times B <AB 。 假设两台都 ≥ A B \geq A\times B ≥AB ,因为贵的那台机器这样生产总能被便宜的那台替换, 就与假设…

【TypeScript】知识点梳理(二)

#对于对象Object进行类型定义&#xff0c;一般不会new Object这么写# 对象体 ? 可选类型 let student: { name: string, grade?: number } 对于可能存在多个不确定类型 let student: {name:string[key: string]: any } 函数 let sum: (a: number, b: number) > numbe…

51单片机的家用煤气报警系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温度传感器CO传感器蓝牙LED、蜂鸣器等模块构成。适用于家用天然气泄露报警器、煤气泄露报警器、无线报警等相似项目。 可实现功能: 1、LCD1602实时显示温度和煤气浓度 2、温度传感器DS18B20采集环境温度 3、CO传…

【架构】efk日志监控

文章目录 一、EFK组件及其功能二、EFK日志监控的工作流程三、EFK日志监控的优势四、EFK日志监控的应用场景 推荐阅读 EFK日志监控是一种高效的日志管理解决方案&#xff0c;由Elasticsearch、Fluentd&#xff08;或Logstash&#xff09;和Kibana三个开源工具组成。以下是对EFK日…