设计模式——建造者模式

建造者模式:
将一个复杂的对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示
在这里插入图片描述
product: 要创建的复杂对象
builder(抽象建造者):规定要实现的复杂对象的创建,不涉及具体的对象部件的创建
concretebuilder:实现builder。针对不同的商业逻辑,具体化复杂对象的各部分创建,在构造完成之后,提供产品的实例。
director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证各部分完整创建或按某种顺序创建。

举例:车的建造(造车轮,造车身,造发动机)
car类:

package builder2;

public class car {
    private String wheel;
    private String skeleton;
    private String engine;

    public String getWheel() {
        return wheel;
    }
    public void setWheel(String wheel) {
        this.wheel = wheel;
    }
    public String getSkeleton() {
        return skeleton;
    }
    public void setSkeleton(String skeleton) {
        this.skeleton = skeleton;
    }
    public String getEngine() {
        return engine;
    }
    public void setEngine(String engine) {
        this.engine = engine;
    }
}

builder接口:

package builder2;

public interface builder {
    public void buildwheel() ;
    public void buildSkeleton();
    public void buildEngine();
    car buildcar();
}

具体建造者1:

package builder2;

public class concratebuilder implements builder {
    public concratebuilder(){
        c = new car();
    }
    car c;
    @Override
    public void buildwheel() {
        c.setWheel("奥迪轮子");
    }

    @Override
    public void buildSkeleton() {
        c.setSkeleton("奥迪车身结构");
    }

    @Override
    public void buildEngine() {
        c.setEngine("奥迪发动机");
    }

    @Override
    public car buildcar() {
        return c;
    }
}

具体建造者2:

package builder2;

public class concratebuilder2 implements builder {
    public concratebuilder2(){
        c = new car();
    }
    car c;
    @Override
    public void buildwheel() {
        c.setWheel("奔驰轮子");
    }

    @Override
    public void buildSkeleton() {
        c.setSkeleton("奔驰车身结构");
    }

    @Override
    public void buildEngine() {
        c.setEngine("奔驰发动机");
    }

    @Override
    public car buildcar() {
        return c;
    }
}

指导者:

package builder2;

public class director {
    public car construct(builder b){
        b.buildEngine();
        b.buildSkeleton();
        b.buildwheel();
        return b.buildcar();
    }
}

客户端:

package builder2;

public class Main {
    public static void main(String[] args) {
        director d = new director();
        builder b = new concratebuilder();
        builder b2 = new concratebuilder2();
        car c = d.construct(b);
        System.out.println(c);

        car c2 = d.construct(b2);
        System.out.println(c2);
    }
}

运行结果:
在这里插入图片描述
建造者模式和抽象工厂的区别:
建造者模式的指导者(director)管理建造者(builder),用户与指导者联系,指导者联系建造者,最后得到产品。建造者模式可以强制实行一种分步骤进行的构造过程。只提供产品类各个组件的建造,具体的建造过程交给指导者。
工厂模式将全部创建过程封装在工厂类,由工厂类像客户端提供最终的产品。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值