码迷,mamicode.com
首页 > 其他好文 > 详细

关于建造者模式的个人理解

时间:2017-09-15 16:45:11      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:code   builder   create   实现类   类对象   参数   方式   str   一个   

 

作为创建型的模式,肯定是创建对象等时候用的.

联系到实际,就是一个javaBean 如果想获取一个完整的对象, 需要为属性挨个赋值.

这样如果连续创建多个对象的时候, 重复代码 及代码量明显太多了

这时候就应该抽象出来一个 创建对象的接口,或者抽象类  每一类对象一个实现类.

在创建一个控制类. 里面调用接口的每一个方法, 同时返回创建好的对象. 

 

eg:   手机套餐  多种套餐:   套餐包含 通话时间 和流量

javaBean :  

public Class SJtc {

  String thsj;// 通话时间

  String ll; 流量

  get();

  set();

}

正常如果构建套餐. 直接 Sjtc sjtc = new Sjtc(); sjtc.setThsj()... 这样写 

 

接下来换一个实现方式:

public abstrac class SjcBuilder {

  Sjtc sjtc = new Sjtc();

  abstract void setThsj();

  abstract void setLl();

      getSJtc{

  return this.sjtc;  

}

}

// 具体套餐实现类:

public ASjtc extends SjcBuilder {

  void setThsj(){

  sjtc.setThsj("123123");

  }

  void setLl(){

  sjtc.setLl("123123");

  }  

}

再写一个控制类调用 抽象类所有方法;

puclic class control{

SjcBuilder builder;

public control(buider){

this.builder = builder; 

}

Sjrc getTc(){

 builder.setThsj();

builder.setLl();

return builder;

}

 

}

这样调用的时候 这样就好了  

control control = new control(new ASjtc());

control.getTc();

调用者不用关心 a套餐都需要什么?

 

把抽象类 换成接口是一样的.  创建对象可以放在builde里面.  

但是注意 使用完之后置空

     public void createDoppelganger(String name){
        doppelganger = new Doppelganger(name);
    }

    public Doppelganger getDoppelganger(){
        try {
            return doppelganger; 
        }finally{
            doppelganger = null;
        }
    }

 

 

总体而言 建造者模式 跟工厂模式相比, 多了一个控制类, 用来控制对象的创建. 同时建造者模式 是关注的创建的过程.为了减少中间创建对象代码  

在实际工作中 完全是有利用价值的,但是因为例子中 各个实现类的参数都是已知的. 在实际中可能是变化的, 这样可以在java bean加一个方法.来处理这些,只要规则一置就好了

关于建造者模式的个人理解

标签:code   builder   create   实现类   类对象   参数   方式   str   一个   

原文地址:http://www.cnblogs.com/haoerlv/p/7526611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!