Android设计模式——建造者模式(2)

......

}

public Builder newBuilder() {

return new Builder(this);

}

//Builder类

public static final class Builder {

Dispatcher dispatcher;

...

int pingInterval;



public Builder() {

dispatcher = new Dispatcher();

    protocols = DEFAULT_PROTOCOLS;

    ...

}

Builder(OkHttpClient okHttpClient) {

 this.dispatcher = okHttpClient.dispatcher;

 this.proxy = okHttpClient.proxy;

 ...

}

...

//最后创建的是OkHttpClient类的对象

public OkHttpClient build() {

  return new OkHttpClient(this);

}

}

}




接下来自己写个创建模式的弹出框吧,我实现了一个通用的dialog:



public class CommonAlertDialog extends Dialog {

private final String TITLE;//题目

private final String MESSAGE;//信息

private final String CONFIRMTEXT;//确认文字

private final String CANCLETEXT;//取消文字

private final OnCancleClickListener onCancleClickListener;//取消的点击事件

private final OnConfirmClickListener onConfirmClickListener;//确认的点击事件



public interface OnConfirmClickListener{

    void onClick(View view);

}

public interface OnCancleClickListener{

    void onClick(View view);

}



//构造方法,其实这儿可以直接传一个builder过来的,就像OKHttp的构造方法一样

private CommonAlertDialog(@NonNull Context context, String TITLE, String MESSAGE, String CONFIRMTEXT, String CANCLETEXT,

                         OnCancleClickListener onCancleClickListener, OnConfirmClickListener onConfirmClickListener) {

    super(context,R.style.AlertDialogUtil);

    this.TITLE = TITLE;

    this.MESSAGE = MESSAGE;

    this.CONFIRMTEXT = CONFIRMTEXT;

    this.CANCLETEXT = CANCLETEXT;

    this.onCancleClickListener = onCancleClickListener;

    this.onConfirmClickListener = onConfirmClickListener;

}



@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.view_common_dialog);

    initView();

}

public static Builder Builder(Context context){

    return new Builder(context);

}

private void initView() {

    Button btnConfirm = findViewById(R.id.btn_confirm);

    Button btnCancel = findViewById(R.id.btn_cancel);

    TextView tvTitle = findViewById(R.id.tv_title);

    TextView tvMessage = findViewById(R.id.tv_message);



    if (!TextUtils.isEmpty(TITLE)) {

        tvTitle.setText(TITLE);

    }

    if (!TextUtils.isEmpty(MESSAGE)) {

        tvMessage.setText(MESSAGE);

    }

    if (!TextUtils.isEmpty(CONFIRMTEXT)) {

        btnConfirm.setText(CONFIRMTEXT);

    }

    if (!TextUtils.isEmpty(CANCLETEXT)) {

        btnCancel.setText(CANCLETEXT);

    }

    btnConfirm.setOnClickListener(v -> {

        if(null != onConfirmClickListener){

            onConfirmClickListener.onClick(v);

        }

        dismiss();

    });

    btnCancel.setOnClickListener(v -> {

        if(null != onCancleClickListener){

            onCancleClickListener.onClick(v);

        }

        dismiss();

    });

}

public CommonAlertDialog shown(){

    show();

    return this;

}

//创建Builder类

public static class Builder{

    private String mTitle;

    private String mMessage;

    private String mConfirmText;

    private String mCancelText;

    private OnConfirmClickListener mOnConfirmClickListener;

总结

本文讲解了我对Android开发现状的一些看法,也许有些人会觉得我的观点不对,但我认为没有绝对的对与错,一切交给时间去证明吧!愿与各位坚守的同胞们互相学习,共同进步!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值