02 May 2018

创造者模式缩写复杂对象构建过程

1.背景:对象属性一个个set,代码冗余

2.创造者模式介绍:将一个复杂对象的构建与表示形式分离,使得同样的创建过程可以创建不同的表现形式

​ 例子:kfc套餐,A+B,A+B+C提供给用户的只是套餐这个实例对象,组合的具体过程隐藏

3.优点:lombok是在编译器完成的代码生成,不需要在运行期通过反射动态生成,节省jvm资源

4.应用:lombok @Builder

import lombok.Builder;
@Builder
public class BuilderExample{
  private String code;
  private String msg;
}

使用方式:BuilderExample.builder().code(“A00000”).msg(“成功”).build();

lombok自动生成代码

class BuilderExample{
  private String code;
  private String msg;
  
  BuilderExample(String code,String msg){
    this.code=code;
    this.msg=msg;
  }
  
  public static BuilderExampleBuilder builder(){
    return new BuilderExampleBuilder();
  }
  
  public static class BuilderExampleBuilder {
    private String code;
  	private String msg;
  	
  	BuilderExampleBuilder(){}
  	
  	public BuilderExampleBuilder code(String code){
      this.code=code;
      return this;
  	}
  	public BuilderExampleBuilder msg(String msg){
      this.msg=msg;
      return this;
  	}
  	
  	public BuilderExampleBuilder build(){
      return new BuilderExample(name,msg);
  	}
  }
}

5.实现

1.外部类,生成无参构造方法,生成全参构造方法
2.生成一个静态内部类
3.在内部类生成和外部类相同的属性名
4.builder方法,返回一个静态内部类的对象
5.参数方法:内部类方法名就是参数名,返回值是内部类,this.x=x;  return this;
6.build方法,在内部类调用外部类的全参构造函数,得到一个外部类对象,所有属性构造完成


blog comments powered by Disqus