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

相关推荐
YQ_ZJH几秒前
Redisson 看门狗机制详解
java·redis
那我掉的头发算什么4 分钟前
【javaEE】多线程——线程安全进阶☆☆☆
java·jvm·安全·java-ee·intellij-idea
悟空CRM服务12 分钟前
我用一条命令部署了完整CRM系统!
java·人工智能·开源·开源软件
组合缺一13 分钟前
Solon AI 开发学习 - 1导引
java·人工智能·学习·ai·openai·solon
百***490016 分钟前
基于SpringBoot和PostGIS的各省与地级市空间距离分析
java·spring boot·spring
电摇小人39 分钟前
科学备赛今年NOIP!!
java·开发语言
未若君雅裁1 小时前
LeetCode 18 - 四数之和 详解笔记
java·数据结构·笔记·算法·leetcode
Bug快跑-11 小时前
Java、C# 和 C++ 并发编程的深度比较与应用场景
java·开发语言·前端
Moe4881 小时前
ConcurrentHashMap 重要方法实现原理和源码解析(二)
java·后端
有梦想的攻城狮2 小时前
初识Rust语言
java·开发语言·rust