Java 建造者模式

描述:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。“建造的内容”是由建造者实现,“建造的顺序”由指导者决定。
与抽象工厂的区别:Builder模式遵循一定的步骤一步一步的创建对象,这样一来,按照时间顺序创建对象就显得非常重要了。


class Person {
    String head, body, foot;

    public String toString() {
        return head + body + foot;
    }
}
//抽象的建造者
interface BuildPerson {
    void head();

    void body();

    void foot();
    //建造者返回一个建造好的person
    Person getPerosn();
}
//男人的建造者
class BuildMan implements BuildPerson {
    private Person person;

    public BuildMan() {
        person = new Person();
    }

    public void head() {
        person.head = "构造一个男人的头";
    }

    public void body() {
        person.body = "构造一个男人的身体";
    }

    public void foot() {
        person.foot = "构造一个男人的脚";
    }

    public Person getPerosn() {
        // TODO Auto-generated method stub
        return person;
    }

}
//女人的建造者
class BuildWoMan implements BuildPerson {
    private Person person;

    public BuildWoMan() {
        person = new Person();
    }

    public void head() {
        person.head = "构造一个女人的头";
    }

    public void body() {
        person.body = "构造一个女人的身体";
    }

    public void foot() {
        person.foot = "构造一个女人的脚";
    }

    public Person getPerosn() {
        // TODO Auto-generated method stub
        return person;
    }

}
//指导者
class Director {
    public Person construct(BuildPerson builder) {
        builder.head();
        builder.body();
        builder.foot();
        return builder.getPerosn();
    }
}
//客户端
public class Client {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Director director = new Director();
        //建造一个男人,传入男人的建造者
        Person person = director.construct(new BuildMan());
        System.out.println(person);
        //建造一个女人,传入女人的建造者
        person = director.construct(new BuildWoMan());
        System.out.println(person);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值