给人的直观感觉是把行为从类中抽象出来,类提要求,其功能实现是借助别的类(builder)提供的函数,让builder提供行为。相对来说这个模式不是太难。
builder把类中相同的代码抽象了出来,实现了代码的复用。同样的builder同样可以扩展功能。
builder接口:行为的基类。创建不同的行为集合。
interface Builder {
void buildA();
void buildB();
void buildC();
}
ABuilder具体的行为提供者。
public class ABuilder implements Builder {
@Override
public void buildA() {
System.out.println("造A型房子步骤1");
}
@Override
public void buildB() {
System.out.println("造A型房子步骤2");
}
@Override
public void buildC() {
System.out.println("造A型房子步骤3");
}
}
client 提要求的客户。
public class Client {
Builder builder;
Client(Builder builder) {
this.builder = builder;
}
void getHome() {
builder.buildA();
builder.buildB();
builder.buildC();
System.out.println("A型房子完成");
}
}
测试
class Test {
public static void main(String[] args) {
ABuilder home = new ABuilder();
Client client = new Client(home);
client.getHome();
}
}
结果:
造A型房子步骤1
造A型房子步骤2
造A型房子步骤3
A型房子完成
提示:看了好多设计模式,你会发现里面的构造共同处:在A类中引用B接口,C类实现B接口提供函数,在A中委托给C类实现。这是java多态精髓所在。