java建造者_Java建造者模式

什么是建造者模式:建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式优点:

- 在建造者模式中,客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,相同的建造过程可以创建不同的产品对象

- 使用的不同的具体建造者就可以得到不同的产品对象,具体建造者之间相互独立

- 可以更加惊喜的控制产品的创建过程

- 增加新的具体建造者无需修改原有的类库代码,指挥者类针对抽象建造者类编程,符合“开闭原则”

在这样的设计模式中,有以下几个角色:

1 builder:为创建一个产品对象的各个部件指定抽象接口。

2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。

3 Director:构造一个使用Builder接口的对象。

4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

45bf2efcc84e82832508a0b5e0c9834f.png

例子:比喻我们构建一个人类

public class Human {

private String head; //头部

private String body; //身体

private String hand; //手

private String foot; //脚

public String getHead() {

return head;

}

public void setHead(String head) {

this.head = head;

}

public String getBody() {

return body;

}

public void setBody(String body) {

this.body = body;

}

public String getHand() {

return hand;

}

public void setHand(String hand) {

this.hand = hand;

}

public String getFoot() {

return foot;

}

public void setFoot(String foot) {

this.foot = foot;

}

}

接口:一个定义了造人标准的接口

/*看,一个接口定义好了。有各种造部位的方法,最后给个createHuman方法给你返回一个我们想要造的人。

现在,人的类和造人的标准我们都定义好了。那我们可以先造一个人出来,先造一个高智商的人吧。*/

//一个接口。一个定义了造人标准的接口。

public interfaceIBuildHuman {public voidbuildHead();public voidbuildBody();public voidbuildHand();public voidbuildFoot();publicHuman createHuman();

}

看,一个接口定义好了。有各种造部位的方法,最后给个createHuman方法给你返回一个我们想要造的人。

现在,人的类和造人的标准我们都定义好了。那我们可以先造一个人出来,先造一个高智商的人吧。

//实现接口

/*这个高智商的造人过程自然是实现了IBuildHuman这个造人标准的接口了。然后就是set方法,最后返回造好的human。*/

public classSmartManBuilder implements IBuildHuman {

Human human;publicSmartManBuilder() {

human= newHuman();

}

@Overridepublic voidbuildHead() {

human.setHead("智商180的头脑");

}

@Overridepublic voidbuildBody() {

human.setBody("新的身体");

}

@Overridepublic voidbuildHand() {

human.setHand("新的手");

}

@Overridepublic voidbuildFoot() {

human.setFoot("新的脚");

}

@OverridepublicHuman createHuman() {returnhuman;

}

}

这个高智商的造人过程自然是实现了IBuildHuman这个造人标准的接口了。然后就是set方法,最后返回造好的human。

创建一个director类

/*好的,其实到这里呢,我们已经完成了建造的过程。那就这么简单的建造过程,还搞了一个建造模式吗?非也。

接下来,就是介绍建造者模式的精髓,那就是director。

这个director呢,就是来执行我们刚才的造人动作的。没错,精髓就是我们刚才的造人动作。我们先看代码:*/

public classDirector {publicHuman createHumanByDirecotr(IBuildHuman bh){

bh.buildBody();

bh.buildFoot();

bh.buildHand();

bh.buildHead();returnbh.createHuman();

}

}

//创建BuilderTest类

public classBuilderTest {public static voidmain(String[] args) {

Director director= newDirector();

Human human=director.createHumanByDirecotr(newSmartManBuilder());

System.out.println(human.getBody());

System.out.println(human.getFoot());

System.out.println(human.getHand());

System.out.println(human.getHead());

}

}

结果:

2300f1ffeeccc9c1e7ef3d10a1e5afe1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值