【设计模式】建造者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )(一)

简介: 【设计模式】建造者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )(一)

文章目录

一、建造者模式简介

二、建造者模式适用场景

三、建造者模式优缺点

四、建造者模式与工厂模式

五、建造者模式代码示例

1、学生类

2、建造者抽象类

3、建造者实现类

4、教师类 ( 非必须 )

5、测试类

六、实例类和建造者类定义在同一个类中 ( 建造者模式常用用法 )

1、实例类 + 建造者类

2、测试类





一、建造者模式简介


建造者模式 : 将 一个复杂对象 的 构建过程 与其 表示 分离 , 使得 同样的构建过程 , 可以 创建不同的表示 ;


用户只需要 指定 需要建造的类型 就可以 得到该类型对应的产品实例 , 不关心建造过程细节 ;


建造者模式就是 如何逐步构建包含多个组件的对象 , 相同的构建过程 , 可以创建不同的产品 ,



建造者模式类型 : 创建型 ;






二、建造者模式适用场景


建造者模式适用场景 :


结构复杂 : 对象 有 非常复杂的内部结构 , 有很多属性 ;

分离创建和使用 : 想把 复杂对象 的 创建 和 使用 分离 ;

当创造一个对象 需要很多步骤时 , 适合使用建造者模式 ;

当创造一个对象 只需要一个简单的方法就可以完成 , 适合使用工厂模式 ;






三、建造者模式优缺点


建造者模式优点 :


封装性好 : 创建 和 使用 分离 ;

扩展性好 : 建造类之间 相互独立 , 在 一定程度上解耦 ;


建造者模式缺点 :


增加类数量 : 产生多余的 Builder 对象 ;

内部修改困难 : 如果 产品内部发生变化 , 建造者也要相应修改 ;





四、建造者模式与工厂模式


建造者模式 与 工厂模式 :


注重点不同 : 建造者模式 更注重于 方法的调用顺序 ; 工厂模式 注重于 创建产品 , 不关心方法调用的顺序 ;

创建对象力度不同 : 创建对象的力度不同 , 建造者模式可以创建复杂的产品 , 由各种复杂的部件组成 , 工厂模式创建出来的都是相同的实例对象 ,





五、建造者模式代码示例



1、学生类


package builder;
/**
 * 学生类
 */
public class Student {
    private String name;
    private String age;
    private String number;
    private String address;
    private String school;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", number='" + number + '\'' +
                ", address='" + address + '\'' +
                ", school='" + school + '\'' +
                '}';
    }
}



2、建造者抽象类


package builder;
/**
 * 抽象建造者
 */
public abstract class StudentBuilder {
    public abstract void buildName(String name);
    public abstract void buildAge(String age);
    public abstract void buildNumber(String number);
    public abstract void buildAddress(String address);
    public abstract void buildSchool(String school);
    public abstract Student makeCourse();
}



3、建造者实现类


package builder;
/**
 * 建造者实现类
 */
public class StudentBuilderImpl extends StudentBuilder {
    private Student student = new Student();
    @Override
    public void buildName(String name) {
        this.student.setName(name);
    }
    @Override
    public void buildAge(String age) {
        this.student.setAge(age);
    }
    @Override
    public void buildNumber(String number) {
        this.student.setNumber(number);
    }
    @Override
    public void buildAddress(String address) {
        this.student.setAddress(address);
    }
    @Override
    public void buildSchool(String school) {
        this.student.setSchool(school);
    }
    @Override
    public Student makeCourse() {
        return this.student;
    }
}


目录
相关文章
|
3天前
|
设计模式 Java
【设计模式系列笔记】建造者模式
建造者模式是一种创建型设计模式,用于将复杂对象的构建与其表示分离,使构建过程可定制。关键元素包括产品类(定义要构建的对象)、建造者接口(定义构建方法)、具体建造者类(实现构建过程)和指导者类(负责构建过程)。通过建造者模式,客户端可以灵活地创建具有不同表示的复杂对象,提高代码的可读性和可维护性,尤其适用于构建过程复杂且包含多个可选部分的情况。
108 1
|
3天前
|
设计模式 uml
【设计模式】建造者模式就是游戏模式吗?
【设计模式】建造者模式就是游戏模式吗?
11 0
|
3天前
|
设计模式 uml
大话设计模式(3)——造物者一般的建造者模式
大话设计模式(3)——造物者一般的建造者模式
8 1
大话设计模式(3)——造物者一般的建造者模式
|
3天前
|
设计模式 前端开发 API
写出易维护的代码|React开发的设计模式及原则
本文对React社区里出现过的一些设计模式进行了介绍,并讲解了他们遵循的设计原则。
|
3天前
|
设计模式 存储 前端开发
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
26 4
|
3天前
|
设计模式 JavaScript 前端开发
[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
|
3天前
|
设计模式 存储 Java
C++从入门到精通:3.5设计模式——提升代码可维护性与可扩展性的关键
C++从入门到精通:3.5设计模式——提升代码可维护性与可扩展性的关键
|
3天前
|
设计模式 测试技术 Go
[设计模式 Go实现] 创建型~建造者模式
[设计模式 Go实现] 创建型~建造者模式
|
3天前
|
设计模式 Java
小谈设计模式(14)—建造者模式
小谈设计模式(14)—建造者模式
|
3天前
|
设计模式 算法 Java
23种设计模式,访问者模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】访问者模式是一种将算法与对象结构分离的设计模式。这种模式主要用于执行一个操作(或一组操作)在一个对象结构的各元素上,它可以在不修改各元素的类的前提下定义新的操作。
20 2