设计模式——建造者模式解析

设计模式——建造者模式解析1 建造者模式介绍建造者模式定义 将一个复杂对象的构建与它的表示分离 使得同样的构建过程可以创建不同的表示 建造者模式包括的角色 1 Builder 给出一个抽象接口或抽象类 以规范产品的建造 这个接口规定要实现复杂对象的哪些部分的创建 并不涉及具体的对象部件的创建 一般由子类具体实现 2 ConcreteBuil Builder 接口的实现类 并返回组建好对象实例 3 Direc

0.前言

写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦~

1.  建造者模式介绍

建造者模式定义:

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

 

建造者模式包括的角色:

1Builder:给出一个抽象接口或抽象类,以规范产品的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建,一般由子类具体实现

2ConcreteBuilderBuilder接口的实现类,并返回组建好对象实例。

3Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。

4Product:要创建的复杂对象,产品类

 

建造者模式的使用场景:

1)当产品有复杂的内部构造时(参数很多)。

2)需要生产的产品的属性相互依赖,这些属性的赋值顺序比较重要时(因为在调用ConcreteBuilder的赋值方法时是有先后顺序的)。

 

2.建造者模式实现

下面是利用建造者模式“组装一台电脑”的实现方式,便于理解该模式如何运用。

2.1 产品类

要组装一台电脑(Computer类),我们假设它有三个部件:CPU 、主板以及内存。

Computer类中提供三个set方法分别设置这三个属性。

public class Computer { private String mCpu; private String mMainboard; private String mRam; public void setmCpu(String mCpu) { this.mCpu = mCpu; } public void setmMainboard(String mMainboard) { this.mMainboard = mMainboard; } public void setmRam(String mRam) { this.mRam = mRam; } }

2.2 Builder

下面就是一个抽象的Builder类,里面提供了安装CPU、主板和内存的抽象方法,以及组装成电脑的create方法

public abstract class Builder { public abstract void buildCpu(String cpu); public abstract void buildMainboard(String mainboard); public abstract void buildRam(String ram); public abstract Computer create(); }

2.3 Builder实现类

下面是一个继承Builder的子类,里面不仅新建了Computer的实例,还提供了安装CPU、主板和内存的具体实现方法,并且在组装成电脑的create方法将该Computer对象实例返回

public class MyComputerBuilder extends Builder { private Computer mComputer = new Computer(); @Override public void buildCpu(String cpu) { mComputer.setmCpu(cpu); } @Override public void buildMainboard(String mainboard) { mComputer.setmMainboard(mainboard); } @Override public void buildRam(String ram) { mComputer.setmRam(ram); } @Override public Computer create() { return mComputer; } }

2.4 Director

指挥者(Director)类用来规范组装电脑的流程顺序,先安装主板,再安装CPU,最后安装内存并组装成电脑。

public class Direcror { Builder mBuild=null; public Direcror(Builder build){ this.mBuild=build; } public Computer CreateComputer(String cpu,String mainboard,String ram){ //规范建造流程,这个顺序是由它定的 this.mBuild.buildMainboard(mainboard); this.mBuild.buildCpu(cpu); this.mBuild.buildRam(ram); return mBuild.create(); } }

2.5 使用

Builder mBuilder = new MyComputerBuilder(); Direcror mDirecror=new Direcror(mBuilder); mDirecror.CreateComputer("i7","Intel主板","mRam");//返回Computer实例对象 

以上便完成了整个建造者模式的实现细节。

3 建造者模式精简版

在现实开发中,往往省去Director的角色,而直接使用一个Buider实例来进行对象的组装。

建造者模式优缺点

建造者模式的优点:

1)建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心,良好的封装性是建造者模式的优点之一。

2)建造者类逻辑独立,易拓展

 

建造者模式的缺点:

很明显产生了多余的Build对象以及Dirextor对象,消耗了内存。

设计模式——建造者模式解析

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201789.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:36
下一篇 2026年3月20日 上午8:37


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号