简单模拟Android中AlertDialog的Builder设计模式

               

     在Android中经常要使用AlertDialog来显示一些简单的窗口,通常的写法类似下面的代码 : 

        AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).setTitle("提示")                .setMessage("确定退出?").create();        dialog.show();
可以看到dialog是通过Builder创建的,那么Builder是如何同AlertDialog协同工作的呢?其实AlertDialog的创建就是使用Builder模式,废话不多说,直接上代码吧。


package com.umeng.dp.builder;/** * @Copyright: Umeng.com, Ltd. Copyright 2011-2015, All rights reserved * @Title: UmengDialog.java * @Package com.umeng.dp.builder * @Description: Builder模式 * @author Honghui He * @version V1.0 */public class UmengDialog {    private String mTitle = "";    private String mMessage = "";    private int mIcon = -1;    /**     * @Title: UmengDialog     * @Description: UmengDialog Constructor     * @param builder 将dialog参数传递给builder,够将好的builder传递给Dialog     */    private UmengDialog(Builder builder) {        mTitle = builder.getTitle();        mMessage = builder.getMessage();        mIcon = builder.getIcon();    }    /**     * @Title: show     * @Description: show dialog     * @throws     */    public void show() {        System.out.println("显示窗口 : " + this);    }    /**     * (非 Javadoc)     *      * @Title: toString     * @Description:     * @return     * @see java.lang.Object#toString()     */    @Override    public String toString() {        return "UmengDialog [mTitle=" + mTitle + ", mMessage=" + mMessage + ", mIcon=" + mIcon                + "]";    }    /**     * @ClassName: Builder     * @Description: Builder模式, 用于构建复杂的对象     * @author Honghui He     */    public static class Builder {        private String mDlgTitle = "";        private String mDlgMessage = "";        private int mDlgIcon = -1;        /**         * @Title: Builder         * @Description: Builder Constructor         */        public Builder() {        }        /**         * 获取 mDlgTitle         *          * @return 返回 mDlgTitle         */        public String getTitle() {            return mDlgTitle;        }        /**         * 设置 mDlgTitle         *          * @param 对mDlgTitle进行赋值         */        public Builder setTitle(String title) {            this.mDlgTitle = title;            return this;        }        /**         * 获取 mDlgMessage         *          * @return 返回 mDlgMessage         */        public String getMessage() {            return mDlgMessage;        }        /**         * 设置 mDlgMessage         *          * @param 对mDlgMessage进行赋值         */        public Builder setMessage(String msg) {            this.mDlgMessage = msg;            return this;        }        /**         * 获取 mDlgIcon         *          * @return 返回 mDlgIcon         */        public int getIcon() {            return mDlgIcon;        }        /**         * 设置 mDlgIcon         *          * @param 对mDlgIcon进行赋值         */        public Builder setIcon(int resId) {            this.mDlgIcon = resId;            return this;        }        /**         * @Title: create         * @Description: 创建窗口         * @throws         */        public UmengDialog create() {            return new UmengDialog(this);        }    }}

输出结果 : 

显示窗口 : UmengDialog [mTitle=Alert Dialg, mMessage=Builder, mIcon=123]

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值