建造者模式:实现对一个复杂对象的构建和表示的分离
package Mode; import java.util.ArrayList; import java.util.List; /** * 构建者模式的四个角色 * 1,builder:给出一个抽象接口 * 2, ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建 * 3,Director:调用具体建造者来创建复杂对象的各个部分 * 4,Product:要创建的复杂对象。 * * 本例采用造小人来写 -- 游戏中出现的各种各样的小人是怎么建造的呢, * 我们今天就用设计模式的思维来模拟建造简单的小人 * */ //产品小人 class Product{ //小人的各个身体的零件,用String表示出来 List<String> parts = new ArrayList<String>(); //添加零件的方法 public void add(String part){ parts.add(part); } //展示小人 public void show(){ for(String str:parts){ System.out.println(str); } } } //抽象的builder interface Builder{ //建造头部 void buildHead(); //建造身体 void buildBody(); //建造腿 void buildFeet(); //返回产品 Product getProduct(); } //胖的人具体建造 class FatBuilder implements Builder{ Product product = new Product(); public void buildHead() { product.add("胖人的头"); } public void buildBody() { product.add("胖人的身体"); } public void buildFeet() { product.add("胖人的腿"); } public Product getProduct(){ return product; } } //瘦的人具体建造 class ThinBuilder implements Builder{ Product product = new Product(); public void buildHead() { product.add("瘦人的头"); } public void buildBody() { product.add("瘦人的身体"); } public void buildFeet() { product.add("瘦人的腿"); } public Product getProduct(){ return product; } } //Director类--负责对小人创建 class Director{ public void Construct(Builder builder){ builder.buildHead(); builder.buildBody(); builder.buildFeet(); } } public class BuilderTest { public static void main(String[] args) { //负责小人项目的经理 Director director = new Director(); //负责建立胖人的程序猿1 Builder builder1 = new FatBuilder(); //负责建立瘦人的程序猿2 Builder builder2 = new ThinBuilder(); //经理让程序猿1工作 director.Construct(builder1); //程序猿1工作完成上交作品 Product product = builder1.getProduct(); //作品展示 product.show(); //经理让程序猿2工作 director.Construct(builder2); //程序猿2工作完成上交作品 Product product2 = builder2.getProduct(); //作品展示 product2.show(); } }