网站设计团队名称,一件代发货源网,债权债务交易网站开发,帝国cms网站制作小谈设计模式#xff08;14#xff09;—建造者模式 专栏介绍专栏地址专栏介绍 建造者模式角色分类产品#xff08;Product#xff09;抽象建造者#xff08;Builder#xff09;具体建造者#xff08;Concrete Builder#xff09;指挥者#xff08;Director#xff0… 小谈设计模式14—建造者模式 专栏介绍专栏地址专栏介绍 建造者模式角色分类产品Product抽象建造者Builder具体建造者Concrete Builder指挥者Director 核心思想Java程序程序分析 优缺点分析优点1234 缺点12 总结分析 专栏介绍
专栏地址
link
专栏介绍
主要对目前市面上常见的23种设计模式进行逐一分析和总结希望有兴趣的小伙伴们可以看一下会持续更新的。希望各位可以监督我我们一起学习进步加油各位。
建造者模式
建造者模式是一种创建型设计模式它可以将一个复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。
角色分类
产品Product
表示被构建的复杂对象。通常包含多个部分如属性、方法等。
抽象建造者Builder
定义了构建产品的抽象方法通常包括构建各个部分的方法和返回产品的方法。
具体建造者Concrete Builder
实现了抽象建造者接口负责具体的产品构建过程。通常包含一个具体产品的实例通过构建各个部分最终返回该产品实例。
指挥者Director
负责调用具体建造者来构建产品它不知道具体的构建细节只负责调用构建方法和返回产品。 核心思想
将构建复杂对象的过程分解为多个简单的步骤通过不同的具体建造者来实现这些步骤最终由指挥者来调用具体建造者的方法来构建产品。这样可以使得构建过程更加灵活可以根据需要选择不同的具体建造者来构建不同的产品。
Java程序
// 产品类
class Product {private String part1;private String part2;public void setPart1(String part1) {this.part1 part1;}public void setPart2(String part2) {this.part2 part2;}public void show() {System.out.println(Part 1: part1);System.out.println(Part 2: part2);}
}// 抽象建造者
interface Builder {void buildPart1();void buildPart2();Product getResult();
}// 具体建造者
class ConcreteBuilder implements Builder {private Product product;public ConcreteBuilder() {product new Product();}public void buildPart1() {product.setPart1(Part 1);}public void buildPart2() {product.setPart2(Part 2);}public Product getResult() {return product;}
}// 指挥者
class Director {private Builder builder;public Director(Builder builder) {this.builder builder;}public void construct() {builder.buildPart1();builder.buildPart2();}
}// 客户端
public class Client {public static void main(String[] args) {Builder builder new ConcreteBuilder();Director director new Director(builder);director.construct();Product product builder.getResult();product.show();}
}程序分析
在上述代码中我们定义了一个产品类 Product它有两个部分 part1 和 part2。然后我们定义了一个抽象建造者接口 Builder其中包含了构建产品各个部分的方法并定义了获取最终产品的方法。接着我们实现了具体建造者 ConcreteBuilder它实现了建造者接口并具体实现了构建各个部分的方法。然后我们定义了一个指挥者 Director它负责控制建造过程通过调用建造者的方法来构建产品。最后在客户端中我们创建了一个具体建造者对象并将其传入指挥者中然后通过指挥者来构建产品并最终获取到构建好的产品并展示出来。 优缺点分析
优点
1
可以将复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。
2
可以更加精细地控制对象的构建过程灵活地添加、删除或修改构建步骤从而创建不同的产品。
3
可以避免构造方法中出现过多的参数提高代码的可读性和可维护性。
4
可以通过建造者来隐藏具体产品的实现细节只暴露统一的构建接口提高代码的封装性。
缺点
1
增加了代码的复杂性需要定义多个类和接口来实现建造者模式。
2
如果产品的组成部分变化较少或者只有一个具体建造者建造者模式可能会显得过于繁琐。
总结分析
建造者模式适用于构建复杂对象的场景通过将构建过程分解为多个步骤使得构建过程更加灵活并且可以复用相同的构建过程来创建不同的产品。然而建造者模式也会增加代码的复杂性需要权衡使用建造者模式带来的优势和缺点。