Gson源码研究(二) 建造者模式创建Gson对象

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">//默认创建</span>
Gson gson= new Gson();
//通过GsonBuilder创建
GsonBuilder builder=new GsonBuilder();
Gson gson=builder.create();


创建Gson对象可以使用new Gson对象,也可以使用GsonBuilder来创建Gson对象。
new Gson()创建的Gson对象是默认配置的Gson对象
使用GsonBuilder可以设置各种组件来创建特殊的Gson对象。
推荐使用GsonBuilder的create()方式来创建Gson对象


其中GsonBuilder创建Gson对象使用了设计模式建造者模式
GsonBuilder在配置Gson对象所需要的功能使用了链式的方式,有点像jquery链式调用来配置
最后调用create()来创建Gson,这些配置不需要按顺序调用
Gson gson = new GsonBuilder()
      .registerTypeAdapter(Id.class, new IdTypeAdapter())
      .enableComplexMapKeySerialization()
      .serializeNulls()
      .setDateFormat(DateFormat.LONG)
      .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
      .setPrettyPrinting()
      .setVersion(1.0)
      .create();
配置方法清单介绍:



建造者模式
产品:Gson
创建者:GsonBuilder 主要创建Gson对象
导演者:用户调用GsonBuilder
下面是我模拟的GsonBuilder创建Gson的创建者模式

仅供查考:

package com.zghw.gson;

public final class GsonBuilder {
    private Object config1 = new Object();
    private Object config2 = new Object();
    private Object confign = new Object();

    /**
     * 创建者设置配置
     * 
     * @param config1
     * @return
     */
    public GsonBuilder setConfig1(String config1) {
        this.config1=config1;
        System.out.println("设置配置1后返回,配置后的创建者");
        return new GsonBuilder();
    }

    /**
     * 创建者设置配置2
     * 
     * @param config2
     * @return
     */
    public GsonBuilder setConfig2(String config2) {
        this.config2=config2;
        System.out.println("设置配置2后返回,配置后的创建者");
        return new GsonBuilder();
    }

    /**
     * 设置配置N
     * 
     * @return
     */
    public GsonBuilder setConfign() {
        this.confign=config1;
        System.out.println("设置配置n后返回配置后的创建者");
        return new GsonBuilder();
    }

    public Gson create() {
        System.out.println("组合各种配置进行产品的创建");
        return new Gson(config1,config2,confign);
    }
}

package com.zghw.gson;

public final class Gson {
    
    public Gson() {
        this(new Object(),new Object(),new Object());
    }

    Gson(Object config1, Object config2, Object config3) {
        System.out.println("初始化所有配置!");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值