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

来源:互联网 发布:朗读小说的软件 编辑:程序博客网 时间:2024/05/13 01:48

维基百科


生成器模式(英: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();    }}

这里写图片描述

原创粉丝点击