java-设计模式-5-创建型模式-建造

java-设计模式-5-创建型模式-建造

建造者(Builder)模式

创建的东西细节复杂,还必须暴露给使用者。屏蔽过程而不屏蔽细节

分析:

产品角色(Product)

抽象建造者(Builder)

具体建造者(Concrete Builder)

java 复制代码
@Data
//产品角色
public class Phone {
    protected String cpu;
    protected String mem;
    protected String disk;
    protected String cam;
}
//抽象建造者
abstract class AbstractBuilder{
    Phone phone;
    abstract AbstractBuilder customCpu(String cpu);
    abstract AbstractBuilder customMem(String mem);
    abstract AbstractBuilder customDisk(String disk);
    abstract AbstractBuilder customCam(String cam);
    Phone getProduct(){return phone;}
}
//具体建造者
class XiaomiBuilder  extends AbstractBuilder{
    public XiaomiBuilder(){phone = new Phone();}
    /**
     * @param cpu
     */
    @Override
    AbstractBuilder customCpu(String cpu) {
        phone.cpu = cpu;
        return this;
    }
    @Override
    AbstractBuilder customMem(String mem) {
        phone.mem = mem;
        return this;
    }
    @Override
    AbstractBuilder customDisk(String disk) {
        phone.disk = disk;
        return this;
    }
    @Override
    AbstractBuilder customCam(String cam) {
        phone.cam = cam;
        return this;
    }
}

@Builder可以代替上面的类的创建。

相关推荐
独自破碎E2 分钟前
机器人Java后端算法笔试题解析
java·windows·算法
我是一颗柠檬3 分钟前
【JDK8新特性】函数式接口Day2
java·开发语言·后端·intellij-idea
Bat U3 分钟前
JavaEE|JVM
java·jvm·java-ee
Mahir086 分钟前
Spring Boot 自动装配深度解密:从原理到自定义 Starter 实战
java·spring boot·后端·自动装配·自定义starter·大厂面试题
淘源码d7 分钟前
产科系统源码,数字产科源码,Java(后端) + Vue + ElementUI(前端) + MySQL(数据库),确保系统稳定性与扩展性。
java·源码·数字产科·产科系统·智能化孕产服务·高危五色预警·智慧产科
wand codemonkey1 小时前
SpringbootWeb【入门】+MySQL【安装】+【DataDrip安装 】+【连接MySQL】
java·mysql·mybatis
Mahir089 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
RyFit10 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码10 小时前
C++ 内存分区 堆区
java·开发语言·c++
绝知此事11 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表