津津乐道设计模式 - 建造者模式详解(教你如何构造一个专属女友)

在这里插入图片描述

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

什么是建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,用于创建复杂对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式的适用场景

  • 创建复杂对象:当对象的创建过程较为复杂,涉及多个步骤或者有不同的配置选项时,可以使用创造者模式来将创建过程封装,并且可以灵活地构建不同的对象表示。
  • 避免构造器参数过多:如果一个对象的构造器需要传入很多参数,且这些参数有一定的组合关系,使用构造函数来创建对象会显得冗长且不易理解。而创造者模式可以通过链式调用或者方法调用的方式,使创建对象的代码更加清晰、可读性更高。
  • 对象的部分属性可选:当对象的一些属性是可选的,可以通过建造者模式提供的方法来设置这些可选属性,从而灵活地构建对象。

总的来说,建造者模式适用于需要创建复杂对象,并且希望将创建过程与对象表示分离的情况。它可以提供更好的灵活性和可读性,同时也能避免构造器参数过多和对象部分属性可选的问题。

代码案例

假设我们要创建一个女朋友对象,并且女朋友具有多个可选的特征,例如身高、体重、发色和爱好等。我们可以使用创造者模式来创建这个女朋友对象。

首先,我们定义一个女朋友类 Girlfriend,它具有身高、体重、发色和爱好等属性:

public class Girlfriend {
    private int height;
    private int weight;
    private String hairColor;
    private List<String> hobbies;

    public void setHeight(int height) {
        this.height = height;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    public void setHairColor(String hairColor) {
        this.hairColor = hairColor;
    }

    public void setHobbies(List<String> hobbies) {
        this.hobbies = hobbies;
    }
    // 省略其他方法和属性的定义
}

然后,我们定义一个女朋友构建器类 GirlfriendBuilder,它负责构建女朋友对象:

public class GirlfriendBuilder {
    private Girlfriend girlfriend;

    public GirlfriendBuilder() {
        girlfriend = new Girlfriend();
    }

    public GirlfriendBuilder setHeight(int height) {
        girlfriend.setHeight(height);
        return this;
    }

    public GirlfriendBuilder setWeight(int weight) {
        girlfriend.setWeight(weight);
        return this;
    }

    public GirlfriendBuilder setHairColor(String hairColor) {
        girlfriend.setHairColor(hairColor);
        return this;
    }

    public GirlfriendBuilder setHobbies(List<String> hobbies) {
        girlfriend.setHobbies(hobbies);
        return this;
    }

    public Girlfriend build() {
        return girlfriend;
    }
}

现在,我们可以使用创造者模式来构建女朋友对象,根据需要选择设置不同的特征:

GirlfriendBuilder builder = new GirlfriendBuilder();
Girlfriend girlfriend = builder
        .setHeight(160)
        .setWeight(50)
        .setHairColor("Brown")
        .setHobbies(Arrays.asList("旅行", "电影", "美食"))
        .build();

通过创造者模式,我们可以将女朋友对象的构建过程与表示分离开来。我们可以灵活地选择需要的特征,并且在需要的时候可以添加更多的设置方法。这样,我们可以清晰地构建不同类型的女朋友对象,并且代码可读性也得到了提高。

或许大家看到上述构建女朋友对象方法,发现了JDK中也存在类似得建造者模式,比如:StringBuilder

建造者模式优缺点

建造者模式(Builder Pattern)具有以下优点:

  • 封装性:创造者模式将对象的构建过程封装在一个独立的构建器类中,使得客户端代码与具体构建过程解耦。客户端只需要指定构建器的配置选项,而无需关心对象的具体构建细节。
  • 灵活性:创造者模式可以根据需求定制不同的构建器来创建不同的对象表示。通过链式调用或者方法调用的方式,可以灵活地设置对象的属性和选项,以获得所需的对象。
  • 可读性:使用创造者模式创建对象的代码可读性较高。通过链式调用或者方法调用的方式,可以按照一定的顺序逐步设置对象的属性,使得代码更加清晰易懂。
  • 可以创建复杂对象:创造者模式适用于创建复杂对象,特别是当对象的构建过程涉及多个步骤或者有不同的配置选项时。它可以将复杂的构建过程分解为多个简单的步骤,使得代码可维护性更高。

建造者模式也有一些缺点:

  • 增加了代码量:引入创造者模式会增加额外的构建器类和方法,从而增加了代码量。对于简单的对象创建,使用创造者模式可能会显得繁琐。
  • 对象属性修改不灵活:一旦对象构建完成,一般情况下无法直接修改对象的属性。如果需要修改已创建对象的属性,可能需要重新创建一个新的构建器来进行修改。

需要根据具体的情况来权衡使用创造者模式的优点和缺点。如果对象的构建过程较为复杂,并且需要灵活地定制不同的对象表示,那么创造者模式是一个合适的选择。但对于简单的对象创建,可以选择更简洁的方式来实现。

结语

本章节主要讲解建造者模式应用场景、建造者模式优缺点,并演示了以建造者模式构造一个专属女友的代码案例,。如果本文对你有用,欢迎关注收藏评论,后续将陆续推出贴切生活的搞笑讲解方式带大家一起学编程~

样例代码:https://github.com/lhmyy521125/toher-designmode

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micro麦可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值