设计模式(3)builder

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

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

复制代码
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

相关推荐
JAVA学习通24 分钟前
北京明光云振铎数据科技Java面经
java·开发语言·科技
贫民窟的勇敢爷们7 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
jerryinwuhan7 小时前
基于各城市站点流量的复合功能比较
开发语言·php
AC赳赳老秦7 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主7 小时前
Java基础:list、set、map一遍过
java·开发语言
灵犀学长8 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
南 阳8 小时前
Python从入门到精通day66
开发语言·python
好家伙VCC9 小时前
【无标题】
java
十八旬9 小时前
快速安装ClaudeCode完整指南
开发语言·windows·python·claude
前进的李工10 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain