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

来源:互联网 发布:便宜的香水知乎 编辑:程序博客网 时间:2024/05/14 11:30
<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
原创粉丝点击