建造者模式

本文介绍了建造者模式的概念及其应用场景,并通过实例代码展示了如何利用建造者模式来创建复杂对象的不同表示形式,使创建过程与表示分离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建造者模式

             如果你需要将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图时,可以选择使用建造者模式。比如,你要画一个人,你需要先画头、身体、两手、两脚。这些是固定的流程,而具体的胖人、瘦人,这些就是不同的表示意图。这是就可以使用建造者模式固定建造流程,具体实现交由子类去实现。如果我们使用了建造模式,用户就只需指定需要建造的类型就可以得到它们,而具体的建造细节就不用知道了。

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(即具体对象)

建造者模式结构图:
这里写图片描述

建造者模式结构图代码解析:

//Product产品类,由多个部件组成
class Product{
    List<String> parts = new ArrayList<>();
    public void add(String part){
        parts.add(part);
    }

    public void show(){
        for(String part: parts){
            println(part);
        }
    }
}
//Builder类:确定产品由两个部件组成
abstract class Builder{

    public abstract void buildPartA();
    public abstract void buildPartB();
    //返回建造的产品
    public abstract Product GetResult();
}
//具体的建造者类:ConcreteBuilder1
class ConcreteBuilder1 extends Buidler{

    private Product product = new Product();

    public void buildPartA(){
        product.add("部件A")
    }
    public void buildPartB(){
        product.add("部件B")
    }
    //返回建造的产品
    public Product getResult(){
        return product;
    }
}
//具体的建造者类:ConcreteBuilder2
class ConcreteBuilder2 extends Buidler{

    private Product product = new Product();

    public void buildPartA(){
        product.add("部件X")
    }
    public void buildPartB(){
        product.add("部件Y")
    }
    //返回建造的产品
    public Product getResult(){
        return product;
    }
}
//指挥者类,用来指定具体的建造过程
class Director{

    public void Construct(Builder builder){
        builder.buildPartA();
        builder.buildPartB();
    } 
}

///客户端类   
class Main{

    public static void main(String[] args){

        Director director = new Director();
        Builder b1 = new ConcreteBuilder1();
        Builder b2 = new ConcreteBuilder2();

        //构建b1类型产品,比如瘦人
        director.Construct(b1);
        Product p1 = b1.getResult();
        p1.show();

        //构建b2类型产品,比如胖人
        director.Construct(b2);
        Product p2 = b2.getResult();
        p2.show();
    }
}

也就是说,建造者模式用于:当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值