zoukankan      html  css  js  c++  java
  • 23种设计模式之建造者模式

    建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

     

    package designMode.builder;
    
    import java.util.LinkedList;
    import java.util.List;
    
    class Product {
        
        List<String> parts = new LinkedList<String>();
        
        public void add(String part){
            parts.add(part);
        }
        
        public void show(){
            System.out.println("产品创建...");
            for (String str : parts) {
                System.out.println(str);
            }
        }
    }
    package designMode.builder;
    
    interface Builder {
        
        void buildPartA();
        
        void buildPartB();
        
        Product getResult();
    }
    package designMode.builder;
    
    class ConcreteBuilder1 implements Builder{
        
        private Product product = new Product();
    
        @Override
        public void buildPartA() {
            product.add("部件A");
        }
    
        @Override
        public void buildPartB() {
            product.add("部件B");
        }
    
        @Override
        public Product getResult() {
            return product;
        }
    
    }
    class ConcreteBuilder2 implements Builder{
        
        private Product product = new Product();
        
        @Override
        public void buildPartA() {
            product.add("部件X");
        }
        
        @Override
        public void buildPartB() {
            product.add("部件Y");
        }
        
        @Override
        public Product getResult() {
            return product;
        }
    }
    package designMode.builder;
    
    class Director {
        
        public void construct(Builder builder){
            builder.buildPartA();
            builder.buildPartB();
        }
    }
    package designMode.builder;
    
    class Test {
        
        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();
        }
    }
  • 相关阅读:
    0841. Keys and Rooms (M)
    0478. Generate Random Point in a Circle (M)
    0714. Best Time to Buy and Sell Stock with Transaction Fee (M)
    0535. Encode and Decode TinyURL (M)
    1721. Swapping Nodes in a Linked List (M)
    0823. Binary Trees With Factors (M)
    1461. Check If a String Contains All Binary Codes of Size K (M)
    0623. Add One Row to Tree (M)
    1332. Remove Palindromic Subsequences (E)
    0706. Design HashMap (E)
  • 原文地址:https://www.cnblogs.com/lxcmyf/p/7404414.html
Copyright © 2011-2022 走看看