java 构建者模式 详解,【java设计模式】建造者模式---StringBuilder讲解

在复习设计模式的时候,了解到StringBuilder使用了建造者模式,在此记录一下。

81319841f202b79141c8cd8055a57391.png

首先我们要了解建造者模式的构成。

3e24728c0de4821735d2e0c23fabaf5a.png

建立一个建造者模式的小栗子。

我们建造一个属性为Person的产品,同时创建Man 和Women.

1.创建接口PersonBuilder,其中包含需要创建的 head body foot   即  Builder

2.创建实现类WomenBuilder和ManBuilder来实现PersonBuilder接口中的方法,即 ConcreteBuilder

3.创建PersonDirector 来指定你要创建的是Women还是Man,即Director

4.由于最后生成的产品是Person,所以我们要创建实体类Person,

5.同时我们可以创建普通类Man和Women,来继承Person, 增强拓展性,方便PersonDirector进行管理。

下面进行实现一下:

4eeab4ce3a5fa8fba06208e0ae36e904.png

步骤一:创建产品类Personpublic class Person {

private String head;

private String body;

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 getFoot() {

return foot;

}

public void setFoot(String foot) {

this.foot = foot;

}

}

步骤二:创建Man和Women类来继承Personpublic class Man extends Person{

public Man() {

System.out.println("开始建造男神");

}

}public class Women extends Person{

public Women() {

System.out.println("开始建造女神");

}

}

步骤三:创建接口PersonBuilder,其中包含需要创建的 head body foot   即  Builderpublic interface PersonBuilder {

void buildHead();

void buildBody();

void buildFoot();

Person builderPerson();

}

步骤四:创建实现类WomenBuilder和ManBuilder来实现PersonBuilder接口中的方法,即 ConcreteBuilderpublic class ManBuilder implements PersonBuilder{

Person person;

public ManBuilder() {

person=new Man();

}

@Override

public void buildHead() {

person.setBody("建造男神的头");

}

@Override

public void buildBody() {

person.setBody("建造男神的身体");

}

@Override

public void buildFoot() {

person.setBody("建造男神的脚");

}

@Override

public Person builderPerson() {

return person;

}

}public class WomenBuilder implements PersonBuilder{

Person person;

public WomenBuilder() {

person=new Women();

}

@Override

public void buildHead() {

person.setBody("建造女神的头");

}

@Override

public void buildBody() {

person.setBody("建造女神的身体");

}

@Override

public void buildFoot() {

person.setBody("建造女神的脚");

}

@Override

public Person builderPerson() {

return person;

}

}

步骤五:创建PersonDirector 来指定你要创建的是Women还是Man,即Directorpublic class PersonDirector {

public Person constructPerson(PersonBuilder pb) {

pb.buildHead();

pb.buildBody();

pb.buildFoot();

return pb.builderPerson();

}

}

步骤六:建个测试类测试一下。public class Test {

public static void main(String[] args) {

PersonDirector pd=new PersonDirector();

Person manPerson=pd.constructPerson(new ManBuilder());

Person womenPerson=pd.constructPerson(new WomenBuilder());

}

}

19b9096505e5d475b078c5ffd8f22cb4.png

下面记录一下StringBuilder

52a9ffeb5e699dce64ed2e1ca06a869a.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值