设计模式(二)— Builder模式

自由扩展你的项目——Builder模式

Builder模式的定义

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

Builder模式的使用场景

(1)相同的方法,不同的执行顺序,产生不同的事件结果时。
(2)多个部件或零件,都可以装配到一个对象中,但是产生的运行结果有不相同时。
(3)产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用时。
(4)当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时,大部分使用建造者模式是在这种场景。

Builder模式示例

Computer.class

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

    Computer() { }

    //设置主板
    public void setBoard(String board) {
        this.board = board;
    }

    //设置显示器
    public void setDisplay(String display) {
        this.display = display;
    }

    //设置操作系统
    public void setOS(String os) {
        this.os = os;
    }
}

ComputerBuilder.class

public  class ComputerBuilder {
    private Computer computer = new Computer();
    //设置主机
    public ComputerBuilder buildBoard(String board){
        computer.setBoard(board);
        return this;
    }

    //设置显示器
    public ComputerBuilder buildDisplay(String display) {
        computer.setDisplay(display);
        return this;
    }

    //设置操作系统
    public ComputerBuilder buildOS(String os){
        computer.setOS(os);
        return this;
    }

    //创建Computer
    public Computer create() {
        return computer;
    }
}

调用:

ComputerBuilder computerBuilder = new ComputerBuilder();
Computer myComputer = computerBuilder.buildBoard("英特尔主板")
                .buildDisplay("不知道什么牌子的显示器")
                .buildOS("Windows10")
                .create();

小结

Builder模式在Android开发中比较常用,通常作为配置类的构建器将配置的构建和表示分离开来,同时也是将配置从目标中隔离出来,避免过多的setter方法。Builder模式比较常见的实现形式是通过调用链实现,这样使得代码更简洁、易懂。

优点

(1)良好的封装性,使用建造者模式可以使客户端不必知道产品内部组成的细节。
(2)建造者独立,容易扩展。

缺点

会产生多余的Builder对象,消耗内存。不过这个缺点好像可以忽略了吧,那都不是事。

猜你喜欢

转载自blog.csdn.net/kavenka/article/details/82530226