创建者模式,将一个复杂对象的结构与它的表示分离,使得通用的构建过程可以创建不同的表示
好处:使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了
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("画甜美的微笑");
}
}