设计模式之-----建造者模式

网上看了很多对建造者模式的介绍,但是很多都很模糊,今天看到一个例子觉得很不错所以决定先从例子开始讲起再说理解

例子参考:https://blog.csdn.net/u010102390/article/details/80179754

  1. 步骤

    1. 电脑实例类

public class Human {

    private String head;

    private String body;

    private String hand;

    private String foot;

    public String getHead() {

       return head;

    }

    public void setHead(String head) {

       this.head = head;

    }

    public String getBody() {

       return body;

    }

    public void setBody(String body) {

       this.body = body;

    }

    public String getHand() {

       return hand;

    }

    public void setHand(String hand) {

       this.hand = hand;

    }

    public String getFoot() {

       return foot;

    }

    public void setFoot(String foot) {

       this.foot = foot;

    }

}

 

              2.方法实现接口

public interface IBuildHuman {

     public void buildHead();

     public void buildBody();

     public void buildHand();

     public void buildFoot();

     public Human createHuman();

}

 

              3. 实现实例类,赋值


public class SmartManBuilder implements IBuildHuman {

 

  Human human;

 

  public SmartManBuilder(){

      human = new Human();

  }

 

  @Override

  public void buildHead() {

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

  }

 

  @Override

  public void buildBody() {

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

     

  }

 

  @Override

  public void buildHand() {

      human.setHand("新的手");    

  }

 

  @Override

  public void buildFoot() {

      human.setFoot("新的脚");

     

  }

 

  @Override

  public Human createHuman() {

      return human;

  }

   

}

 

 

               4.Director类的创建方法执行创建电脑(创建类)


public class Director {

     public Human createHumanByDirecotr(IBuildHuman bh){

      bh.buildBody();

      bh.buildFoot();

      bh.buildHand();

      bh.buildHead();

      return bh.createHuman();

     }

 

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

New   Director来实现创建电脑


public class BuilderTest {

     public static void main(String[] args){

      Director director = new Director();

      Human human = director.createHumanByDirecotr(new SmartManBuilder());

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

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

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

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

     }

 

自我理解:

  1. 用途
    1. 将一个复杂的构建与表示相分离,使得同样的构建过程可以创建不同的表示
    2. 当一些基本部件不变而组合经常发生变化的时候
  2. 优点
    1. 建造者独立,易扩展。
    2. 便于控制细节风险
  3. 缺点
    1. 产品必须有共同点,范围有限制。
    2. 如内部变化复杂,会有很多的建造类。
  4. 与工厂模式的区别
    1. 建造者模式更加关注与零件装配的顺序。

版权声明:本博客为记录本人自学感悟,内容大多从网上学习与整理所得,若侵权请告知!

https://mp.csdn.net/postedit/80365677

猜你喜欢

转载自blog.csdn.net/qq_39657909/article/details/81231950