1. 程式人生 > >【java設計模式】建造者模式---StringBuilder講解

【java設計模式】建造者模式---StringBuilder講解

在複習設計模式的時候,瞭解到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進行管理

下面進行實現一下:


步驟一:建立產品類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