ビルダーパトロール
9481 ワード
同じ建設プロセスが異なる表現をつくることができるように、複雑なオブジェクトの構造をその表現から切り離してください.
Builder:製品オブジェクト の部品を作成するための抽象インターフェースを指定する ConcreteBuilder :ビルダーインターフェイスを実装することで、製品の一部を構成し、組み立てます.作成した表現を定義し続けます.製品を取得するインターフェイスを提供します. ディレクター:ビルダーインタフェース を使用しているオブジェクトを建設する製品:建設中の複雑なオブジェクトを表します.ConcreteBuilderは、製品の内部表現を構築し、それが組み立てられるプロセスを定義します.部品を最終的な結果に組み立てるためのインターフェースを含む構成部品を定義するクラスを含みます. コード
参加者
コード
public class Main {
public static void main(String[] args) {
Director director = new Director();
Builder b1 = new ConcreteBuilder1();
Builder b2 = new ConcreteBuilder2();
director.construct(b1);
Product p1 = b1.getResult();
p1.show();
director.construct(b2);
Product p2 = b2.getResult();
p2.show();
}
}
public class Director {
public void construct(Builder builder) {
builder.buildPartA();
builder.buildPartB();
}
}
public interface Builder {
Product getResult();
void buildPartA();
void buildPartB();
}
public class ConcreteBuilder1 implements Builder {
private Product product = new Product();
@Override
public Product getResult() {
return product;
}
@Override
public void buildPartA() {
product.add("PartA");
}
@Override
public void buildPartB() {
product.add("PartB");
}
}
public class ConcreteBuilder2 implements Builder {
private Product product = new Product();
@Override
public Product getResult() {
return product;
}
@Override
public void buildPartA() {
product.add("PartX");
}
@Override
public void buildPartB() {
product.add("PartY");
}
}
public class Product {
private List<String> parts = new ArrayList<>();
public void show() {
System.out.println("\nProduct Parts -------");
for (String part : parts) {
System.out.println(part);
}
}
public void add(String part) {
parts.add(part);
}
}
出力
Product Parts -------
PartA
PartB
Product Parts -------
PartX
PartY
エディエルジュリアン61
/
デザインパターン
メインデザインパターン
アイドル・ Sep 27・ 1分読む
#designpatterns
#creational
#structural
#behavioral
Reference
この問題について(ビルダーパトロール), 我々は、より多くの情報をここで見つけました
https://dev.to/eidher/builder-patter-12jc
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
public class Main {
public static void main(String[] args) {
Director director = new Director();
Builder b1 = new ConcreteBuilder1();
Builder b2 = new ConcreteBuilder2();
director.construct(b1);
Product p1 = b1.getResult();
p1.show();
director.construct(b2);
Product p2 = b2.getResult();
p2.show();
}
}
public class Director {
public void construct(Builder builder) {
builder.buildPartA();
builder.buildPartB();
}
}
public interface Builder {
Product getResult();
void buildPartA();
void buildPartB();
}
public class ConcreteBuilder1 implements Builder {
private Product product = new Product();
@Override
public Product getResult() {
return product;
}
@Override
public void buildPartA() {
product.add("PartA");
}
@Override
public void buildPartB() {
product.add("PartB");
}
}
public class ConcreteBuilder2 implements Builder {
private Product product = new Product();
@Override
public Product getResult() {
return product;
}
@Override
public void buildPartA() {
product.add("PartX");
}
@Override
public void buildPartB() {
product.add("PartY");
}
}
public class Product {
private List<String> parts = new ArrayList<>();
public void show() {
System.out.println("\nProduct Parts -------");
for (String part : parts) {
System.out.println(part);
}
}
public void add(String part) {
parts.add(part);
}
}
Product Parts -------
PartA
PartB
Product Parts -------
PartX
PartY
エディエルジュリアン61 / デザインパターン
メインデザインパターン
アイドル・ Sep 27・ 1分読む
#designpatterns
#creational
#structural
#behavioral
Reference
この問題について(ビルダーパトロール), 我々は、より多くの情報をここで見つけました https://dev.to/eidher/builder-patter-12jcテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol