美文网首页
Android 设计模式实战 Builder模式

Android 设计模式实战 Builder模式

作者: 小鹏Mart | 来源:发表于2016-11-14 11:31 被阅读0次

    定义:

    将一个负责对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    使用使用场景:

    1.相同的方法,不同的执行顺序,产品不同的结果

    2.当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值

    实战

    public final class ImageLoaderConfiguration {

    final DiskCachediskCache;

    private  ImageLoaderConfiguration(final  Builder builder) {

          diskCache= builder.diskCache;

    }

    public static  ImageLoaderConfiguration createDefault(Context context) {

    return new  Builder(context).build();

    }

    public static class  Builder {

                   private DiskCachediskCache=null;

                    public Builder(Context context) {

                        this.context= context.getApplicationContext();

                     }

                    public  ImageLoaderConfiguration build() {

                             initEmptyFieldsWithDefaultValues();

                             return newImageLoaderConfiguration(this);

                      }

                 private void   initEmptyFieldsWithDefaultValues() {

                       if(diskCache==null) {

                             diskCache= DefaultConfigurationFactory

            .createDiskCache(context,diskCacheFileNameGenerator,diskCacheSize,diskCacheFileCount);

    }

                     }

                   public  Builder discCache(DiskCache diskCache) {

                                     return  diskCache(diskCache);

                     }

                      public    Builder  diskCache(DiskCache diskCache) {

                       if(diskCacheSize>0||diskCacheFileCount>0) {

                                       L.w(WARNING_OVERLAP_DISK_CACHE_PARAMS);

    }

                    if(diskCacheFileNameGenerator!=null) {

    L.w(WARNING_OVERLAP_DISK_CACHE_NAME_GENERATOR);

                       }

                           this.diskCache= diskCache;

                           return this;

                }

    }

    }

    使用方法

    public static void  initImageLoader(Context context) {

     ImageLoaderConfiguration.Builder  config=new ImageLoaderConfiguration.Builder(context);

    config.diskCacheFileNameGenerator(new Md5FileNameGenerator());

    config.writeDebugLogs();// Remove for release app

     ImageLoader.getInstance().init(config.build());

    }

    总结:

    作用:通常作为配置类的构造器将配置的构建和表示分离,避免过多的setter方法,通过链式调用

    优点:

    1.良好的封装性,可以使客户端不比知道产品内部组成的细节

    2.独立,容易扩展

    缺点:

    1.会产生多余的Builder对象,消耗内存

    相关文章

      网友评论

          本文标题:Android 设计模式实战 Builder模式

          本文链接:https://www.haomeiwen.com/subject/svdhpttx.html