【java設計模式】建造者模式---StringBuilder講解
阿新 • • 發佈:2019-01-25
在複習設計模式的時候,瞭解到StringBuilder使用了建造者模式,在此記錄一下。
首先我們要了解建造者模式的構成。
建立一個建造者模式的小栗子。
我們建造一個屬性為Person的產品,同時建立Man 和Women.
1.建立介面PersonBuilder,其中包含需要建立的 head body foot 即 Builder
2.建立實現類WomenBuilder和ManBuilder來實現PersonBuilder介面中的方法,即 ConcreteBuilder
3.建立PersonDirector 來指定你要建立的是Women還是Man,即Director
4.由於最後生成的產品是Person
5.同時我們可以建立普通類Man和Women,來繼承Person, 增強拓展性,方便PersonDirector進行管理。
下面進行實現一下:
步驟一:建立產品類Person
public 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類來繼承Person
public class Man extends Person{
public Man() {
System.out.println("開始建造男神");
}
}
public class Women extends Person{
public Women() {
System.out.println("開始建造女神");
}
}
步驟三:建立介面PersonBuilder,其中包含需要建立的 head body foot 即 Builder
public interface PersonBuilder { void buildHead(); void buildBody(); void buildFoot(); Person builderPerson(); }
步驟四:建立實現類WomenBuilder和ManBuilder來實現PersonBuilder介面中的方法,即 ConcreteBuilder
public 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,即Director
public 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