首页 > 代码库 > 关于Builder模式

关于Builder模式

builder模式是什么?

builder模式是设计模式的一种,从名词方面来解析就是构建。

builder模式优势在哪里?
它比javaBean模式具有更强的灵活性。

 

 

实例分析
javaBean与builder模式构建实例比较

package system.info;
/*
 * 以业务类型类作为样板,包含javaBean和Builder两种构建方式
 */
public class TBusinessType {
 
    //javaBean 模式 start
    private Long id;
    private java.lang.String name;
    private java.lang.String code;

    public java.lang.Long getId() {
        return this.id;
    }

    public void setId(java.lang.Long id) {
        this.id = id;
    }

    public java.lang.String getName() {
        return this.name;
    }

    public void setName(java.lang.String name) {
        this.name = name;
    }

    public java.lang.String getCode() {
        return this.code;
    }

    public void setCode(java.lang.String code) {
        this.code = code;
    }

    public TBusinessType() {
    }

    public TBusinessType(java.lang.Long id, java.lang.String name,
            java.lang.String code) {
        this.id = id;
        this.name = name;
        this.code = code;
    }
    //javaBean 模式 end
    
    
    
    /*
     * Builder 模式 start
     */
    public static class Builder{
        private Long id;
        private java.lang.String name;
        private java.lang.String code;
    
    public Builder setName(java.lang.String name){
        this.name = name;
        return this;
    }

  /*

  还回构建类本身实例才是重点,方法不是最重要的

  */
    public Builder setCode(java.lang.String code){
        this.code = code;
        return this;
    }
    public Builder setId(java.lang.Long id){
        this.id = id;
        return this;
    }

   /*
      主要函数 ,以构建器类作为参数导入TBusinessType构造函数,这才是   */

    public TBusinessType build(){
        
        return new TBusinessType(this);
    }    
    }
    public TBusinessType(Builder t) {
        this.id = t.id;
        this.name = t.name;
        this.code = t.code;
    }
    /*
     * Builder 模式 end
     */
    public static void main(String args[]){
        
        TBusinessType type1 = new TBusinessType();//javabean 模式 ,调用的时候有可能会漏掉一两个字段参数没设置,这是经常会发生的。
        type1.setCode("ttt");
        type1.setName("tttt");
        type1.setId(100l);
        
        
        TBusinessType  type2 = new TBusinessType.Builder() //builder模式,代码看起来是不是更优雅?
                                .setCode("tttt")
                                .setName("ttt")
                                .setId(100l).build();
        
        
        
        
    }
    
    
}

总结:builder模式确实用起来比较方便,可扩展性强

关于Builder模式