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可以代替上面的类的创建。

相关推荐
回忆是昨天里的海10 小时前
k8s集群-节点间通信之安装kube-flannel插件
java·docker·kubernetes
信仰_27399324311 小时前
Mybatis-Spring重要组件介绍
java·spring·mybatis
盖世英雄酱5813611 小时前
java深度调试【第二章通过堆栈分析性能瓶颈】
java·后端
没有bug.的程序员11 小时前
AOP 原理深剖:动态代理与 CGLIB 字节码增强
java·spring·aop·动态代理·cglib
2401_8370885011 小时前
ResponseEntity - Spring框架的“标准回复模板“
java·前端·spring
lang2015092811 小时前
Spring Boot RSocket:高性能异步通信实战
java·spring boot·后端
默默coding的程序猿12 小时前
1.北京三维天地公司-实施实习生
java·sql·技术支持·面经·实施·实施工程师·三维天地
天天摸鱼的java工程师12 小时前
解释 Spring 框架中 bean 的生命周期:一个八年 Java 开发的实战视角
java·后端
尤老师FPGA12 小时前
LVDS系列32:Xilinx 7系 ADC LVDS接口参考设计(三)
android·java·ui
自由的疯12 小时前
Java 如何学习 Jenkins?
java·架构