建造者模式(生成器模式)

维基百科


生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象


抽象创建接口

public interface PersonBuilder {

    void buildHead();
    void buildBody();
    void buildArmLeft();
    void buildArmRight();
    void buildLegLeft();
    void buildLegRight();

}

具体实现1

public class PersonThinBuilder implements PersonBuilder{
    @Override
    public void buildHead() {
        System.out.println("瘦人头");
    }

    @Override
    public void buildBody() {
        System.out.println("瘦人身体");
    }

    @Override
    public void buildArmLeft() {
        System.out.println("瘦人左胳膊");
    }

    @Override
    public void buildArmRight() {
        System.out.println("瘦人右胳膊");
    }

    @Override
    public void buildLegLeft() {
        System.out.println("瘦人左腿");
    }

    @Override
    public void buildLegRight() {
        System.out.println("瘦人右腿");
    }
}

具体实现2

public class PersonSideBuilder implements PersonBuilder{
    @Override
    public void buildHead() {
        System.out.println("胖人头");
    }

    @Override
    public void buildBody() {
        System.out.println("胖人身体");
    }

    @Override
    public void buildArmLeft() {
        System.out.println("胖人左胳膊");
    }

    @Override
    public void buildArmRight() {
        System.out.println("胖人右胳膊");
    }

    @Override
    public void buildLegLeft() {
        System.out.println("胖人左腿");
    }

    @Override
    public void buildLegRight() {
        System.out.println("胖人右腿");
    }
}

创建者

public class PersonDirector {

    private PersonBuilder personBuilder; //持有创建抽象接口

    public PersonDirector(PersonBuilder personBuilder) {
        this.personBuilder = personBuilder;
    }

    public void CreatePerson() {   //对客户端隐藏具体的实现
        personBuilder.buildHead();
        personBuilder.buildBody();
        personBuilder.buildArmLeft();
        personBuilder.buildArmRight();
        personBuilder.buildLegLeft();
        personBuilder.buildLegRight();
    }
}

客户端

public class Main {
    public static void main(String[] args) {
        //只需要告诉服务端要创建什么类型的人,不需要知道如何创建
        PersonDirector personDirector = new PersonDirector(new PersonThinBuilder());
        personDirector.CreatePerson();
    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值