我的博客java
Builder模式是一步一步建立一个复杂对象的建立型模式,它容许用户在不知道内部构建细节的状况下,能够更精细地控制对象的构建流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。ui
将一个复杂对象的构建与它的表示分离,使得一样的构建能够建立不一样的表示。this
相同的方法,不一样的执行顺序,产生不一样的事件结果时。日志
多个部件或零件,均可以装配到一个对象中,可是产生的运行结果又不相同时。code
产品类很是复杂,或者产品类中的调用顺序不一样产生了不一样的做用。对象
当初始化一个对象特别复杂,如参数多,且不少参数都具备默认值时。事件
Computer类开发
public class Computer { private String mCpu; private String mScreen; private String mHd; public Computer(String cpu, String screen, String hd) { this.mCpu = cpu; this.mScreen = screen; this.mHd = hd; } @Override public String toString() { return "Computer [mCpu=" + mCpu + ", mScreen=" + mScreen + ", mHd=" + mHd + "]"; } }
ComputerBuilder类get
public class ComputerBuilder { public static class Builder { private String mCpu = "cpu"; private String mScreen = "screen"; private String mHd = "hd"; public Builder cpu(String cpu) { mCpu = cpu; return this; } public Builder screen(String screen) { mScreen = screen; return this; } public Builder hd(String hd) { mHd = hd; return this; } public Computer build() { return new Computer(mCpu, mScreen, mHd); } } }
默认使用
public static void main(String[] args) { Computer computer = new ComputerBuilder.Builder().build(); System.out.println(computer); }
输出日志
Computer [mCpu=cpu, mScreen=screen, mHd=hd]
自定义参数
public static void main(String[] args) { Computer computer = new ComputerBuilder.Builder().cpu("CPU").screen("SCREEN").hd("HD").build(); System.out.println(computer); }
输出日志
Computer [mCpu=CPU, mScreen=SCREEN, mHd=HD]
Builder模式在Android开发中较为经常使用,一般做为配置类的构建器,将配置的构建和表示分离开来,同时也是将配置从目标类中隔离出来,避免过多的setter方法。Builder模式比较常见的实现形式是经过调用链实现,使得代码更简洁、易懂。