建造者模式

1.最基本的模式

由四部分组成:

  • 1.Builder
  • 2.Director
  • 3.ConcreateBuilder
  • 4.Product
    Product就是一个产品的模型,java中的javabean。ConcreateBuilder 就是为javabean设置参数。Builder就是把设置参数的接口抽象出来。Director就是调用ConcreateBuilder的方法。

我们举个例子
假如我们要安装一台电脑,Product就是一个电脑的模型。把设置参数的接口抽象出来。让ConcreateBuilder去实现接口并且设置参数。Director依次去调用设置参数的方法。

public class Computer {

    private String cpu;
    private String hd;
    private String mainBoard;
//省略get set 方法
public interface IBuildComputer {

    void setMainboard();
    void setCpu();
    void setHD();

    Computer getComputer();


}
public class CreateComputer implements IBuildComputer {

    Computer computer ;
    public CreateComputer(){
        computer = new Computer();
    }

    @Override
    public void setMainboard() {
        computer.setMainBoard("安装主板");
    }

    @Override
    public void setCpu() {
        computer.setCpu("安装cpu");
    }

    @Override
    public void setHD() {
        computer.setHd("安装硬盘");
    }

    @Override
    public Computer getComputer() {
        return computer;
    }
}
public class Director {
    
        public Computer builder(IBuildComputer iBuildComputer){
            iBuildComputer.setCpu();
            iBuildComputer.setHD();
            iBuildComputer.setMainboard();
            return iBuildComputer.

测试类

public class ComputerTest {

    public static void main(String[] args){
        Director director = new Director();
        Computer builder = director.builder(new CreateComputer());

        System.out.print(builder.getCpu()+builder.getHd()+builder.getMainBoard());
    }


}

2.上面是最基础的模式,现在升级了一下,通过静态内部类实现零件的无序话构造。

public class HighComputer {

    public String cpu;
    public String hd;
    public String mainBoard;

    public HighComputer(String cpu, String hd, String mainBoard){
        this.cpu = cpu;
        this.hd = hd;
        this.mainBoard = mainBoard;
    }

    static class Builder {
        private String cpu;
        private String hd;
        private String mainBoard;
        public Builder setCpu(String cpu){
            this.cpu = cpu;
            return this;
        }

        public Builder setHD(String hd){
            this.hd = hd;
            return this;
        }

        public Builder setMainBoard(String mainBoard){
            this.mainBoard =  mainBoard;
            return this;
        }

        public HighComputer build(){
            return new HighComputer(cpu,hd,mainBoard);
        }
    }
}

测试类

 HighComputer computer = new HighComputer.Builder().setCpu("i7")
.setHD("1G固态")
.setMainBoard("三无产品").build();

        System.out.print(computer.cpu+computer.hd+computer.mainBoard); 

优点:隐藏具体建造细节,只需要简单配置参数就可以拿到产品。创建过程和产品本身解耦,易于维护和拓展,创建新的创造者无需修改产品,符合“开闭原则”。
缺点:1.建造者模式生产的产品,适合共同点较多的产品,使用范围有局限性。2.如果产品内部变化复杂,会创建不同的创建者,是系统庞大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组...
    justCode_阅读 5,905评论 1 6
  • 【学习难度:★★★★☆,使用频率:★★☆☆☆】直接出处:建造者模式梳理和学习:https://github.com...
    BruceOuyang阅读 4,189评论 0 5
  • 1.Builder模式是怎么来的 考虑这样一个场景,假如有一个类User,里面有很多属性,并且你希望这些类的属性都...
    QuantRuu阅读 3,698评论 0 48
  • 黑镜S03E04 San Juniperov 圣朱尼佩洛 习惯黑镜高科风格后,对此集还是很摸不着头脑的。老式的酒吧...
    蛮凹凸阅读 9,011评论 0 0
  • 所谓共情,是指能够站在对方的角度看问题,体会到对方的情绪。也就是说,有共情能力的人,知道对方和自己是不同的,对方的...
    爱予茉阅读 2,976评论 0 0

友情链接更多精彩内容