Android Builder模式在开发中的应用

最近在学习图片加载框架Glide的时候,被他精简的写法震惊了。一句话,就可以搞定。

Glide.with(mContext)
     .load(url)
     .centerCrop()
     .placeholder(R.drawable.default_img)
     .crossFade()
     .into(mImageView);

 

同时在年初的时候,学习RXJava的时候,用链式编程很优雅。

     Observable
                .just( "1" , "2" )
                .subscribeOn(Schedulers.io() )
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {

                    }
                }) ;

  

今天就来学习一下,建造者模式在Android中简单应用 。

Builder 的好处

  • 代码可读性好,只需要写一句代码,链式编程很优雅
  • 方便。通过不同的组合就可以创建不同的对象
  • 解耦。不需要知道细节,将对象本身与对象构造过程分离。

Builder 模式要怎么写?

package com.app.lib;

/**
 * Created by ${zyj} on 2016/6/27.
 */
public class UserMoule {

    private String id ;
    private String name ;

    public UserMoule( String id , String name ){
        this.id = id ;
        this.name = name ;
    }

    static class Builder {
        private  String id ;
        private  String name ;

        public Builder setId(String id) {
            this.id = id;
            return this ;
        }

        public Builder setName(String name) {
            this.name = name;
            return this ;
        }

        public UserMoule create(){
            return new UserMoule( id , name ) ;
        }
    }

}

  调用

      new UserMoule.Builder()
                .setId( "id")
                .setName( "json")
                .create() ;

  

为什么 Builder 要用 Static 修饰?

一般写内部类的意图都是为了说明该类和宿主类关系密切,而private , static , final 这些可以单独拿出来说,static这个区别比较大,没有static修饰,说明此类必须依赖宿主类的对象;而有static修饰,就不依赖与对象的存在了,类名. 即可,整体类似方法上添加static。private这玩意,完全取决于你是否希望将此类暴露出去;final则是为了标明该类不可继承修改.

而且

使用static就如同你新建了一个JAVA文件,静态内部类不会保持对外部类的引用。如果你的builder需要外部类的引用,那它Build就没有意义了,所以必须加static。

总结

  • 使用 Builder 模式可以解耦,更方便地构造不同的对象
  • Builder 类要用 static 修饰
  • 这里使用了简化的Builder模式,将抽象建造者省略,并且也省略了指导者角色 。

相关链接:http://www.jianshu.com/p/5d9db54892c8

时间: 2024-12-22 22:29:50

Android Builder模式在开发中的应用的相关文章

Android记录22-关于开发中账号绑定的逻辑处理

Android记录22-关于开发中账号绑定的逻辑处理 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要跟大家分享的是开发中我们常常遇到的账号绑定的功能开发,我们先来思考几个问题: 1. 为什么要有账号绑定? 2. 它跟第三方登录有什么不同? 3. 如何来处理账号绑定的相关逻辑? 好,带着这三个疑问,我们来为我们的应用开发账号绑定的功能.给大家看看一个效果图: 前面分享过关于第三方登录.分享的实现的博文:http://blog.c

在Android(Java)开发中如何实现类似C语言中的中断程序

在Android开发过程中,有时候会遇到这样的情况,在一个线程中,执行A操作,B操作需要等A操作结束后才进行,因此需要wait,在java中可以如下代码实现 Handler mBlueHandler = new Handler(Looper.getMainLooper()); Task task = new Task(); mBlueHandler.post(task); while (!task.finish) { synchronized (task) { try { task.wait()

[转]Builder模式在Java中的应用

转自:http://www.cnblogs.com/moonz-wu/archive/2011/01/11/1932473.html 在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则. 我们常常会面临编写一个这样的实现类(假设类名叫DoDoContact),这个类拥有多个构造函数, DoDoCon

Builder模式在Java中的应用(转)

在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则. 我们常常会面临编写一个这样的实现类(假设类名叫DoDoContact),这个类拥有多个构造函数, DoDoContact(String name); DoDoContact(String name, int age); DoDoContact(S

Builder模式在Java中的应用

在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则. 我们常常会面临编写一个这样的实现类(假设类名叫DoDoContact),这个类拥有多个构造函数, DoDoContact(String name); DoDoContact(String name, int age); DoDoContact(S

【IE】浏览器模式与文档模式 及其开发中处理方式

原文:http://blog.csdn.net/neo_liu0000/article/details/7589731 什么是浏览器模式和文本模式? 经常使用IE开发者工具的同学,肯定见过浏览器模式和文本模式,对于这两个名词,综合相关文档解释如下: 浏览器模式(Browser Mode),用于切换IE针对该网页的默认文本模式.对不同版本浏览器的条件注释解析.决定请求头里userAgent的值.它在浏览器发出请求之前就已经确定,网站没有办法修改这个值.它代表的是用户以何种浏览器访问网站. 文本模式

Android 集成sina sdk 开发中,不能使用web授权,停止运行解决办法

在使用新浪SDK的时候,就出现了这个问题,一直以为是代码问题,但核对新浪SDK的DEMO后,发现代码流程都对呀 在Manifest.xml中注入SDK的WebBrowser <activity             android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"             android:configChanges="keyboardHidden|orientation"

Builder模式详解及其在Android开发中的应用

一.引言 在Android开发中,采用Builder模式的代码随处可见,比如说Android系统对话框AlertDialog的使用或者是Android中的通知栏(Notification)的使用,又比如说在一些常用的第三方库中也随处可见其踪迹,比如说一些常用的网络请求库如OkHttp或者是retrofit,又或者是图片加载库Glide中也不缺乏它的应用. 为什么Builder模式在Android或是Java开发中这么火呢?因为它相较于构造函数或者是Get/Set方法,它的灵活性和封装性上都比较有

Android开发中无处不在的设计模式——原型模式

不知不觉这个系列已经写了三篇了,其实很早之前就想写设计模式了,只不过怕自己误人子弟没有提笔去写.后来在实际开发中,发现设计模式可以让一个开发人员融会贯通所学的知识,为了进一步巩固自己,就写下了这一些列文章.前面介绍了三个模式. Android开发中无处不在的设计模式--单例模式 Android开发中无处不在的设计模式--Builder模式 Android开发中无处不在的设计模式--观察者模式 本篇文章介绍的模式其实很简单,即原型模式,按照惯例,先看定义. 用原型实例指定创建对象的种类,并通过拷贝