ビルダーモードは、作成プロセスを外部から隠蔽してプロダクトを作成するモードであり、ディレクターが構築プロセスを決定します
public interface Builder { void buildPartA(); void buildPartB(); void buildPartC(); }
public class BuilderImpl implements Builder { @Override public void buildPartA() { System.out.println("建造部件A"); } @Override public void buildPartB() { System.out.println("建造部件B"); } @Override public void buildPartC() { System.out.println("建造部件C"); } }
public class BuilderImpl2 implements Builder { @Override public void buildPartA() { System.out.println("建造部件AA"); } @Override public void buildPartB() { System.out.println("建造部件BB"); } @Override public void buildPartC() { System.out.println("建造部件CC"); } }
/** * 指挥者:指导 如何 建造 * 组合Builder * @author stone * */ public class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; } /** * 建造方法:定义了建造的流程 * 如果需要其他流程来实现,再new一个指挥者Director就可 */ public void construct() { System.out.println("director 指挥 builder进行建造"); builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); } }
/** * 指挥者:指导 如何 建造 * 组合Builder * @author stone * */ public class Director2 { private Builder builder; public Director2(Builder builder) { this.builder = builder; } /** * 建造方法:定义了建造的流程 * 如果需要其他流程来实现,再new一个指挥者Director就可 */ public void construct() { System.out.println("director2 指挥 builder进行建造"); builder.buildPartB(); builder.buildPartC(); builder.buildPartA(); } }
/* * 建造者模式:建造者模式则是将各种产品集中起来进行管理,用来创建复合对象, * * 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式 */ public class Test { public static void main(String[] args) { Builder builder = new BuilderImpl(); Director director = new Director(builder); /* * 同样的构建过程,不同的模块(buildPartA、buildPartB、buildPartC)实现, new一个builder的实现 * 不同的构建过程,new 一个director * 不同的构建过程,不同的模块实现, new director,new builder */ director.construct(); System.out.println(""); Builder builder2 = new BuilderImpl2(); Director director2 = new Director(builder2); director2.construct(); System.out.println(""); Builder builder3 = new BuilderImpl2(); Director2 director3 = new Director2(builder3); director3.construct(); } }
このプロダクトの特徴は、多くの属性があり、そのほとんどにデフォルト値があることです。
Builder は、主に Product p = new Builder( など) のようなチェーン呼び出しを使用して構築できます。 ).setA().setB().build();
以上がBuilder パターンを実装する Java コードの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。