标签:存在 style 分解 部件 创建过程 direct span protect code
今天为大家分享一下建造者模式
以该图为例子,宝马汽车由很多部件组成,对于我们每一个买车用车的用户来说,我门不需要指导这些部件,分别是怎么装配的,她的装配细节是什么,我们的需求只是,使用这辆车。
抽象来说,无论是在现实世界中还是在软件系统中,都存在一些复杂的对象由很多部件构成,对于大多数用户而言,无须知道这些部件的装配细节,而是使用该对象。 建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。
实例代码
public class Product { private String partA; //可以是任意类型 private String partB; private String partC; //partA的Getter方法和Setter方法省略 //partB的Getter方法和Setter方法省略 //partC的Getter方法和Setter方法省略 } public abstract class Builder { protected Product product=new Product(); public abstract void buildPartA(); public abstract void buildPartB(); public abstract void buildPartC(); public Product getResult() { return product; } public class Director { private Builder builder; public Director(Builder builder) { this.builder=builder; } public void setBuilder(Builder builder) { this.builder=builer; } public Product construct() { builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); return builder.getResult(); } }
Director:一方面它隔离了客户与生产过程;另一方面它负责控制产品的生成过程。指挥者针对抽象建造者编程,客户端只需要知道具体建造者的类型,即可通过指挥者类调用建造者的相关方法,返回一个完整的产品对象
在客户端代码中,无须关心产品对象的具体组装过程,只需确定具体建造者的类型即可,建造者模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的表现。
…… Builder builder = new ConcreteBuilder(); Director director = new Director(builder); Product product = director.construct(); ……
建造者模式的优点
建造者模式的缺点如下:
标签:存在 style 分解 部件 创建过程 direct span protect code
原文地址:https://www.cnblogs.com/LiaoMengyu/p/12588836.html