美文网首页
设计模式之建造者模式

设计模式之建造者模式

作者: 代码之尖 | 来源:发表于2018-12-27 12:31 被阅读0次

英文:Builder

对于建造者模式而已,它主要是将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。适用于那些产品对象的内部结构比较复杂。

建造者模式将复杂产品的构建过程封装分解在不同的方法中,使得创建过程非常清晰,能够让我们更加精确的控制复杂产品对象的创建过程,同时它隔离了复杂产品对象的创建和使用,使得相同的创建过程能够创建不同的产品。但是如果某个产品的内部结构过于复杂,将会导致整个系统变得非常庞大,不利于控制,同时若几个产品之间存在较大的差异,则不适用建造者模式,毕竟这个世界上存在相同点大的两个产品并不是很多,所以它的使用范围有限。

      其UML结构图:

//机器人的类

public class Robot{

       private String head;

       private String body;

       private String hand;

       private String foot;

}

只要是人都是这个类出来的。


//一个定义了造机器人标准的接口。

public interface IBuildHuman {

    public void buildHead();

    public void buildBody();

    public void buildHand();

    public void buildFoot();

    public Robot createRobot();

}

一个接口定义好了。有各种造部位的方法,最后给个createRobot方法给你返回一个我们想要造的机器人。

public class SmartManBuilder implements IBuildHuman {

    Robot robot;

    public SmartManBuilder(){

        robot = new Robot();

    } 

    @Override

    public void buildHead() {

          robot.setHead("智商180的头脑");

      }

     @Override

     public void buildBody() {

          robot.setBody("新的身体");

     }

   @Override

    public void buildHand() {

           robot.setHand("新的手");

     }

     @Override

     public void buildFoot() {

        robot.setFoot("新的脚");

     }

   @Override

   public Robot createRobot() {

       return robot;

   }

}

 这个高智商的造机器人过程自然是实现了IBuildRobot这个造机器人标准的接口了


接下来,就是介绍建造者模式的精髓,那就是director。这个director呢,就是来执行我们刚才的造人动作的。没错,精髓就是我们刚才的造人动作。我们先看代码:

public class Director {

         public Human createRobotByDirector(IBuildRobot bh){

                bh.buildBody();

               bh.buildFoot();

               bh.buildHand();

               bh.buildHead();

               return bh.createRobot();

       }

}

这个director类呢,重点在于createRobotByDirector的参数是我们的造人标准的接口。这样一来,只要是实现了我们的这个接口的类,就都可以作为参数,我们刚刚不是造了一个高智商的人吗?那我们如果想造一个身体运动能力出色的人,也就是运动员,这个director也可以启动这个造人过程,只要我们把这个运动员的类先写好。我们来看看director是如何发挥的:

public class BuilderTest {

  public static void main(String[] args){

      Director director = new Director();

      Robot robot = director.createRobotByDirector(new SmartManBuilder());

      System.out.println(robot.getHead());

      System.out.println(robot.getBody());

      System.out.println(robot.getHand());

      System.out.println(robot.getFoot());

   }

}

输出结果为

智商180的头脑

新的身体

新的手

新的脚

相关文章

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • Javaの设计模式之建造者模式

    推荐阅读:《设计模式之禅》 今早早起,刚刚出炉,哈哈 BuilderPattern 设计模式之建造者模式 Demo...

  • 设计模式之建造者模式

    设计模式之建造者模式 建造者模式 属于 创建型模式,提供一种创建对象的最佳方式。 创建型模式 指不是直接使用ne...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

网友评论

      本文标题:设计模式之建造者模式

      本文链接:https://www.haomeiwen.com/subject/tcjrlqtx.html