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();
        }
    }
  • 相关阅读:
    缓存
    java内存模型—先行发生原则
    Java中的阻塞队列
    java的Map
    事务传播性、隔离性与MVCC
    final修饰符
    领域驱动设计和实践
    对象转换利器之Dozer
    SharePoint Iframe 报错“此内容不能显示在一个框架中”
    使用SVG symbols建立图标系统
  • 原文地址:https://www.cnblogs.com/lxcmyf/p/7404414.html
Copyright © 2011-2022 走看看