A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 小麦芽 中级黑马   /  2017-4-1 16:36  /  818 人查看  /  0 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

前三种模式也行大家都接触过,使用的也多,下面介绍一个建造者模式,如果用好这个模式,再加上链式编程
会让代码很优雅,很灵活,不过也稍微有点儿难度。

建造者模式也是创建型模式的一种,它用来隐藏符合对象的创建过程,把符合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有符合属性的对象。

//----------------------对话框实体类-------------------------------

public class Dialog {
       
        private int Width;
        private int height;
        private String title;
        private String content;
        private String confirm;
        private String cancel;
       
        public int getWidth() {
                return Width;
        }
        public void setWidth(int width) {
                Width = width;
        }
        public int getHeight() {
                return height;
        }
        public void setHeight(int height) {
                this.height = height;
        }
        public String getTitle() {
                return title;
        }
        public void setTitle(String title) {
                this.title = title;
        }
        public String getContent() {
                return content;
        }
        public void setContent(String content) {
                this.content = content;
        }
        public String getConfirm() {
                return confirm;
        }
        public void setConfirm(String confirm) {
                this.confirm = confirm;
        }
        public String getCancel() {
                return cancel;
        }
        public void setCancel(String cancel) {
                this.cancel = cancel;
        }
}

//---------------------抽象出对话框的功能---------------------------------------

public interface DialogDesign {
       
        //对话框的高度
        Dialog  height(int height);
        //对话框的宽度
        Dialog  width(int width);
        //对话框的标题
        Dialog  title(String name);
        //对话框中间的提示信息
        Dialog  content(String content);
        //确定按钮
        Dialog  confirm(String text);
        //取消按钮
        Dialog  cancel(String text);
        //显示对话框
        Dialog  show();
}

//---------------对话框的建造者---------------------------------------------

public class DialogBuilder implements DialogDesign {

        private Dialog mDialog = new Dialog();
       
        @Override
        public Dialog height(int height) {
                mDialog.setHeight(height);
                return mDialog;
        }

        @Override
        public Dialog width(int width) {
                mDialog.setWidth(width);
                return mDialog;
        }

        @Override
        public Dialog title(String name) {
                mDialog.setTitle(name);
                return mDialog;
        }

        @Override
        public Dialog content(String content) {
                mDialog.setContent(content);
                return mDialog;
        }

        @Override
        public Dialog confirm(String text) {
                mDialog.setConfirm(text);
                return mDialog;
        }

        @Override
        public Dialog cancel(String text) {
                mDialog.setCancel(text);
                return mDialog;
        }
       
        public Dialog show(){
                if(mDialog.getTitle() != null){
                        System.out.println(mDialog.getTitle());
                }
                if(mDialog.getContent() != null){
                        System.out.println(mDialog.getContent());
                }
                if(mDialog.getConfirm() != null){
                        System.out.println(mDialog.getConfirm());
                }
                if(mDialog.getCancel() != null){
                        System.out.println(mDialog.getCancel());
                }
                if(mDialog.getWidth() > 0){
                        System.out.println(mDialog.getWidth());
                }
                if(mDialog.getHeight() > 0){
                        System.out.println(mDialog.getHeight());
                }
                return mDialog;
        }
}

//------------------对话框长什么样子的管理者-----------------------------------

//这个类其实也可以叫做  
// 对话框管理者
// 对话框操作者
// 指挥创造者
public class DialogTemplate {
        //建造简单的对话框
        public static void simpleBuilder(DialogDesign builder){
                builder.title("标题");
                builder.content("您确定要执行吗?");
                builder.confirm("确定按钮");
                builder.show();
        }
        //建造标准的对话框
        public static void standardBuilder(DialogDesign builder){
                builder.width(100);
                builder.height(100);
                builder.title("标题");
                builder.content("您确定要执行吗?");
                builder.confirm("确定按钮");
                builder.cancel("取消按钮");
                builder.show();
        }
        //建造自定义的对话框
        public static DialogDesign costomBuilder(DialogDesign builder){
                builder.title("标题");
                builder.content("您确定要执行吗?");
                return builder;
        }
}
//-----------------------对话框测试类----------------------------------------
public class BuilderTest {
       
        public static void main(String[] args) {
               
                DialogBuilder sBuilder = new DialogBuilder();
                //对话框管理者生成对话框
                DialogTemplate.simpleBuilder(sBuilder);
        }
}

这个大家可以好好琢磨一下,有什么问题大家一起探讨!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马