創建者模式,將一個複雜對象的結構與它的表示分離,使得通用的構建過程可以創建不同的表示
好處:使得建造代碼與表示代碼分離,由於建造者隱藏了該產品是如何組裝的,所以若需要改變一個產品的內部表示,只需要再定義一個具體的建造者就可以了
UML:
JAVA:
public class BuilderTest {
public static void main(String[] args) throws Throwable {
Person p = new Girl();
PersonDirector director = new PersonDirector(p);
director.createPerson();
}
}
//指揮者
class PersonDirector{
Person p;
public PersonDirector(Person p) {
this.p = p;
}
public void createPerson(){
p.face();
p.body();
p.hands();
p.legs();
}
}
abstract class Person{
//描繪人體結構
abstract void face();
abstract void body();
abstract void hands();
abstract void legs();
//可能還有詳細的描述
abstract void smile();
}
class Girl extends Person{
@Override
void face() {
System.out.println("畫瓜子臉");
}
@Override
void body() {
System.out.println("畫妖嬈的身子");
}
@Override
void hands() {
System.out.println("畫纖細的雙手");
}
@Override
void legs() {
System.out.println("畫修長的玉足");
}
@Override
void smile() {
System.out.println("畫甜美的微笑");
}
}