滴答滴:设计模式我是边学边记录,有问题的欢迎大家指出。学习的过程中会借助AI工具,我想说的是我们要把AI工具当作一个学识渊博的学者,同时要敢于质疑它,不能盲目的觉得对方说的一定是正确的,因为有时它的回答不见得是正确的,要带着自己的思考去使用AI工具,不断的和它对话和探讨。
一.什么是建造者模式
建造者模式是23种设计模式之一,是一种创建型设计模式,言而言之就是创建对象的模式。
你可能会说,java中创建对象直接new就可以了,是的,简单的可以直接new;对象有很多属性呢,直接在构造函数中写参数吗,5个参数以内是可以的,超过5个就违反编码规范了;每个属性的赋值过程比较复杂呢,每次都要在客户端写一遍吗?创建对象有很多步骤呢,每次也都要在客户端写一遍吗?等等,此时你还会说创建对象直接new就好了呀,这正式我们该思考的。
百度百科上是这样说的:建造者模式的核心思想是将一个”复杂对象的构建算法“与它的”部件“及”组装方式“解耦,使得构建算法和组装方式可以独立应对变化,复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式,下面我解释下这句话:
“复杂对象的构建算法”:这通常指的是一系列步骤,按照这些步骤,可以逐步构建一个复杂的对象。在建造者模式中,这些步骤被封装在建造者(Builder)接口或抽象类中,每个步骤对应一个方法。
“部件”:指的是构成复杂对象的各个组成部分。在建造者模式中,这些部件通常是对象的属性或子对象,它们可以通过建造者类(Builder)的方法进行设置。
“部件的组装方式”:这指的是如何将各个部件按照特定的顺序和规则组合成一个完整的对象。在建造者模式中,组装方式通常由指挥者(Director)类来负责。指挥者类知道如何调用建造者类的方法来逐步构建对象,并确定部件的组装顺序和规则。
通过解耦构建算法(即建造者类中的方法)和组装方式(即指挥者类的逻辑),我们可以更加灵活地构建和组装对象。当我们需要改变对象的构建方式时,只需要修改指挥者类中的逻辑,而不需要修改建造者类中的构建算法。同样地,当我们需要添加新的部件或修改部件的实现时,只需要修改建造者类中的相关方法,而不需要修改指挥者类中的组装方式。
这种解耦使得代码更加模块化、可维护和可扩展。同时,它也允许我们复用相同的构建算法来创建不同的对象表示,或者复用相同的部件组