設計模式之建造者模式簡明示例
阿新 • • 發佈:2019-01-04
建造者模式將一個複雜物件的建立和它的表示分離,使用同樣的建立過程可以建立不同的表示
應用例項
在Java中,建造者模式是一種常見的設計模式,StringBuilder以及okhttp3.Request都應用了建造者模式:
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://www.baidu.com") .build();
實現
我們將要實現一個Human類的建造者模式實現。
首先建立Human類
public class Human { private String name; private int age; private int weight; private int height; //-----------Setter and Getter-------------------- public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } //-----------Setter and Getter-------------------- @Override public String toString(){ return getName() + " 的年齡是 " + getAge() + " 的體重是 " + getWeight() + " 的身高是 " +getHeight(); } }
建立Builder介面
public interface Builder { Builder setAge(int age); Builder setName(String name); Builder setWeight(int weight); Builder setHeight(int height); Human build(); }
建立ConcreteBuilder類,使用這個類可以構建Human物件
public class ConcreteBuilder implements Builder { private Human human; @Override public Builder setAge(int age) { this.human.setAge(age); return this; } @Override public Builder setName(String name) { this.human.setName(name); return this; } @Override public Builder setWeight(int weight) { this.human.setWeight(weight); return this; } @Override public Builder setHeight(int height) { this.human.setHeight(height); return this; } @Override public Human build() { return this.human; } public ConcreteBuilder(){ this.human = new Human(); } }
使用演示
public class BuilderDemo { public static void main(String[] args){ Human human = new ConcreteBuilder() .setAge(21) .setName("Amos") .setHeight(176) .setWeight(130) .build(); System.out.println(human); } }
它的輸出為:
Amos 的年齡是 21 的體重是 130 的身高是 176