设计模式 学习笔记5 建造者

本文深入讲解了建造者模式的概念,对比了其与工厂模式的区别,通过具体实例代码展示了如何使用建造者模式来构建复杂对象,强调了该模式在组件组装过程中的灵活性。

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

设计模式 建造者模式

 

建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

 

建造者模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。

 

public class Builder {

 

    private BuilderClass builderClass;

   

    public Builder(BuilderClass builderClass) {

        this.builderClass = builderClass;

    }

   

    public BuilderTeacher construct() {

        this.builderClass.buildName();

        this.builderClass.buildAge();

        this.builderClass.buildClassName();

        return this.builderClass.getTeacher();

    }

}

 

public class BuilderTeacher {

 

    private String name;

    private Integer age;

    private String className;

   

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public Integer getAge() {

        return age;

    }

    public void setAge(Integer age) {

        this.age = age;

    }

    public String getClassName() {

        return className;

    }

    public void setClassName(String className) {

        this.className = className;

    }

    @Override

    public String toString() {

        return "BuilderTeacher [name=" + name + ", age=" + age + ", className=" + className + "]";

    }

   

}

 

public abstract class BuilderClass {

 

    public BuilderTeacher teacher = new BuilderTeacher();

   

    public abstract void buildName();

    public abstract void buildAge();

    public abstract void buildClassName();

   

    public BuilderTeacher getTeacher() {

        return teacher;

    }

   

}

 

public class BuilderClassSunflower extends BuilderClass{

 

    @Override

    public void buildName() {

        teacher.setName("石坂绿");

    }

 

    @Override

    public void buildAge() {

        teacher.setAge(24);

    }

 

    @Override

    public void buildClassName() {

        teacher.setClassName("双叶幼稚园向日葵班");

    }

   

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值