빌더 패턴

동일한 구성 프로세스가 다른 표현을 만들 수 있도록 복잡한 객체의 구성을 해당 표현에서 분리합니다.

참가자들


  • 작성기: 제품 개체의 일부를 만들기 위한 추상 인터페이스를 지정합니다
  • .
  • ConcreteBuilder: Builder 인터페이스를 구현하여 제품의 일부를 구성하고 조립합니다. 생성하는 표현을 정의하고 추적합니다. 제품 검색을 위한 인터페이스를 제공합니다.
  • Director: 빌더 인터페이스를 사용하여 개체를 구성합니다
  • .
  • 제품: 구성 중인 복합 개체를 나타냅니다. 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
    
    




    eidherjulian61 / 디자인 패턴






    좋은 웹페이지 즐겨찾기