java建造者模式
创始人
2024-01-25 09:57:01
0

它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成.

建造者模式包括的角色:

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

(2)ConcreteBuilder:Builder接口的实现类,并返回组建好对象实例

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

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

建造者模式的使用场景:

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

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

建造者模式优缺点

建造者模式的优点:

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

(2)建造者类逻辑独立,易拓·1`展。

建造者模式的缺点:

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

要组装一台电脑(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;}
}
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();
}
Builder实现类
里面不仅新建了Computer的实例,还提供了安装CPU、主板和内存的具体实现方法,并且在组装成电脑的create方法中将该Computer对象实例返回
public class MyComputerBuilder extends Builder {private Computer mComputer = new Computer();@Overridepublic void buildCpu(String cpu) {mComputer.setmCpu(cpu);}@Overridepublic void buildMainboard(String mainboard) {mComputer.setmMainboard(mainboard);}@Overridepublic void buildRam(String ram) {mComputer.setmRam(ram);}@Overridepublic Computer create() {return mComputer;}
}
指挥者(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();}
}
Builder mBuilder = new MyComputerBuilder();
Direcror mDirecror=new Direcror(mBuilder);
mDirecror.CreateComputer("i7","Intel主板","mRam");//返回Computer实例对象

相关内容

热门资讯

洋钱罐借款是正规平台吗?洋钱罐...   随着现在生活质量的提升,现在市面上借款的平台有很多,一些银行借款,小额借款、网贷等等,借款产品名...
2022双黑烂户夜间能下款50...   现在大家的生活压力都很大,物价上涨,但是工资一般不会怎么涨,那么很多时候,大家的资金周转都会有所...
征信很差急需三万怎么办,线上贷...   随着现在的物资水平上涨,很多商品也是很贵的,而且很多人可能除了生活上的开支,有时候还要够买一些比...
无需征信贷款平台有哪些(202...   如今网上的借贷平台层出不穷,网上借贷也是很常见的事情了,因为网上借贷方便快速,但是大家都知道想要...
负债多无逾期申请哪个网贷?20...   现在市面上网贷的平台有很多,不多平台都是要看用户征信的,之前有逾期记录或者负债就很难借到钱,平台...
2022征信烂了审核必过的贷款...   借贷已经成为现在人们最常见的一种消费方式了,要是有什么地方资金有所欠缺的话,通过这一方法是最简单...
征信乱2022年必下款贷款,征...   网贷是当下很流行的一种方式,当然网贷平台对征信是有一定要求的,有一些人的征信不是很友好,之前有逾...
想借个大额贷款把网贷清了可以吗...   网贷已经成为目前很多人会做的,很多人因为资金来不及周转,然后就去网贷,但是很多时候可能你来不及还...
征信乱2022年必下款贷款,征...   网贷是当下很流行的一种方式,当然网贷平台对征信是有一定要求的,有一些人的征信不是很友好,之前有逾...
省呗是正规的贷款平台吗?省呗借...   相信大家对借呗非常熟悉,而且有很多人都在上面申请了,可能还有一些新手不知道借呗是什么,大家在网上...