建造者模式

建造者模式

建造者模式的定义

1.定义:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示

建造者模式的结构图

image-20210318144904456.png

建造者模式的实现

1.代码结构

image-20210318145325920.png

2.调用关系

image-20210318145347617.png

=====代码实现

1.新建一个builder类,并定义抽象方法

package org.example.constructor;

/**
 * @author 
 * @date 2021/3/18 11:22
 **/
public abstract class PersonBuilder {

    public PersonBuilder(){

    }

    public abstract void buildHead();
    public abstract void buildBody();
    public abstract void buildArmLeft();

    public  abstract  void buildArmRight();

    public abstract  void buildLegLeft();

    public abstract  void buildLegRight();
}

2.新建二个具体的builder类,继承builder类,并实现其抽象方法

public class PersonFatBuilder extends PersonBuilder {
    @Override
    public void buildHead() {
        System.out.println("fat head");
    }

    @Override
    public void buildBody() {
        System.out.println("fat body");
    }

    @Override
    public void buildArmLeft() {
        System.out.println("fat arm left");
    }

    @Override
    public void buildArmRight() {
        System.out.println("fat arm right");
    }

    @Override
    public void buildLegLeft() {
        System.out.println("fat leg left");
    }

    @Override
    public void buildLegRight() {
        System.out.println("fat leg right");
    }
}

//==========================================================================

    public class PersonThinBuilder extends PersonBuilder {
    @Override
    public void buildHead() {
        System.out.println("thin head");
    }

    @Override
    public void buildBody() {
        System.out.println("thin body");
    }

    @Override
    public void buildArmLeft() {
        System.out.println("thin arm left");
    }

    @Override
    public void buildArmRight() {
        System.out.println("thin arm right");
    }

    @Override
    public void buildLegLeft() {
        System.out.println("thin leg  left");
    }

    @Override
    public void buildLegRight() {
        System.out.println("thin leg right");
    }
}

3.新建director类,并引用Builder

public class Director {
    private PersonBuilder personBuilder;
    public Director(PersonBuilder personBuilder){
        this.personBuilder=personBuilder;
    }

    public void createPerson(){
        personBuilder.buildHead();
        personBuilder.buildBody();
        personBuilder.buildArmLeft();
        personBuilder.buildArmRight();
        personBuilder.buildLegLeft();
        personBuilder.buildLegRight();
    }
}

4.新建客户端

package org.example.constructor;

/**
 * @author 
 * @date 2021/3/18 11:32
 **/
public class Client {

    public static void main(String[] args) {

        Director director = new Director(new PersonThinBuilder());
        director.createPerson();
        Director director1 = new Director(new PersonFatBuilder());
        director1.createPerson();
    }
}

5.运行结果

image-20210318145832437.png

建造者模式的好处

建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要在新建一个具体的建造者就可以了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式-建造者模式 阔别已久了的博客,我又回来。为什么又好长时间没写了,因为最近产品给我的需求稍微有点多,加上自...
    醒着的码者阅读 3,276评论 0 0
  • 一、建造者模式定义:用于构造一个复杂的类实例,封装具体的构造步骤。旨在提供一个优雅的创建对象的方式,降低代码耦合度...
    阿尔卑斯山下的蔷薇园阅读 2,854评论 0 2
  • 个人学习笔记分享,当前能力有限,请勿贬低,菜鸟互学,大佬绕道如有勘误,欢迎指出和讨论,本文后期也会进行修正和补充 ...
    Echo_YeZ阅读 1,644评论 0 0
  • 建造者模式(Builder Pattern)也叫做生成器模式,今天让我们一起学习一下建造者模式。 一、基本介绍 建...
    冰鉴IT阅读 4,021评论 2 8
  • 建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的...
    聂叼叼阅读 1,794评论 0 1