ホームページ  >  記事  >  Java  >  Builder パターンを実装する Java コードの例

Builder パターンを実装する Java コードの例

黄舟
黄舟オリジナル
2017-03-10 11:49:351807ブラウズ

ビルダーモードは、作成プロセスを外部から隠蔽してプロダクトを作成するモードであり、ディレクターが構築プロセスを決定します


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();
	}
}

実際の開発では、Director の役割が省略され、Builder が直接使用される場合があります。

このプロダクトの特徴は、多くの属性があり、そのほとんどにデフォルト値があることです。

Builder は、主に Product p = new Builder( など) のようなチェーン呼び出しを使用して構築できます。 ).setA().setB().build();

以上がBuilder パターンを実装する Java コードの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。