计算机微刊程序员Android开发

建造者模式

2017-08-21  本文已影响0人  Gray_s

建造者模式可以允许用户在不知道内部细节的情况下,更为精细的控制对象的控制流程。该模式是为了将构建复杂的对象过程和它的部件进行解耦。

定义

将一个复杂对象的构建与它的表示分离,使得同样的构建过程的创建不同的表示。

示例

public class Computer {
    private String OS;
    private String display;
    private String board;

    public Computer(String OS, String display, String board) {
        this.OS = OS;
        this.display = display;
        this.board = board;
    }

    static class Builder {

        private String OS;
        private String display;
        private String board;

        public Builder setOS(String OS) {
            this.OS = OS;
            return this;
        }

        public Builder setDisplay(String display) {
            this.display = display;
            return this;
        }

        public Builder setBoard(String board) {
            this.board = board;
            return this;
        }

        public Computer create() {
            return new Computer(OS, display, board);
        }
    }
}

上面的示例中由Computer中的静态内部类Builder来构建对象,使用者不需要考虑Computer是怎么样具体实现的,只需要在Builder中把需要的参数传入进去,便可以通过create方法拉实现Computer对象。

Android源码中的建造者模式

Android的源码中同样使用了建造者模式,在AlertDialog中便是使用AlertDialog.Builder来构建AlertDialog对象的。

new AlertDialog.Builder(this).setTitle("建造者模式")
               .setCancelable(true)
               .setMessage("使用建造者模式的对话框")
               .create();

查看源码可以发现,Biulder中并不是直接通过new一个AlertDialog对象来构建对象的。而是通过AlertController.AlertParams把在create之前设置的参数先存放在AlertController.AlertParams中,然后在create中new出AlertDialog对象,通过apply方法传入dialog来对它进行设置。

create方法

参考资料:Android源码设计模式

上一篇 下一篇

猜你喜欢

热点阅读