在复习设计模式的时候,了解到StringBuilder使用了建造者模式,在此记录一下。
首先我们要了解建造者模式的构成。
建立一个建造者模式的小栗子。
我们建造一个属性为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进行管理。
下面进行实现一下:
步骤一:创建产品类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());
}
}
下面记录一下StringBuilder