六、创建型模式之建造者模式

总述

建造者模式关注的是具体的过程,创建 的对象比较复杂,需要控制具体的创建过程,比如创建手机,需要控制具体的cpu,内存,磁盘,照相功能,那么这个时候使用建造者模式最为合适

UML图

AbstractPhoneBuilder类为抽象的建造者类,PhoneBuilder为AbstractPhoneBuilder的子类,Phone为相应的手机产品


图片1.png

代码

/**
 * 抽象建造者
 */
public abstract class AbstractBuilder  {
    //phone为建造者要创建的对象
    Phone phone;
    //设置cpu
    abstract AbstractBuilder customCpu(String cpu);
    //设置内存
    abstract AbstractBuilder customMem(String mem);
    //设置磁盘
    abstract AbstractBuilder customDisk(String disk);
    //设置相机
    abstract AbstractBuilder customCam(String cam);

    //返回创建好的phone对象
    Phone getProduct(){
        return phone;
    }
}

//具体的实现创建者

public class XiaomiBuilder  extends AbstractBuilder{

    public XiaomiBuilder(){
        phone =  new Phone();
    }
    @Override
    AbstractBuilder customCpu(String cpu) {
        phone.cpu = cpu;//cpu赋值
        //return this是为了使用链式调用
        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;
    }
}
@Data
public class Phone {
    protected String cpu;
    protected String mem;
    protected String disk;
    protected String cam;
}
public class MainTest {

    public static void main(String[] args) {

        AbstractBuilder builder = new XiaomiBuilder();
        //建造这个手机
//        builder.customMem("16G");
//        builder.customDisk("1T");
//        builder.customCam("2亿");
//        builder.customCpu("骁龙8个8");
        //链式建造者
        Phone phone = builder.customCpu("骁龙8个8")
                .customCam("2亿")
                .customDisk("1T")
                .customMem("16G").getProduct();
        System.out.println(phone);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容