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();
        }
    }
  • 相关阅读:
    通过crontab命令创建任务
    linux 通过at命令创建任务
    在linux中如何实现定时发送邮件到指定邮箱,监测任务
    python发送邮件
    序列化分析
    文件写入
    导入excel成一个list集合不支持大文件倒入(优化点在于分批分线程导入)
    react重学
    关于java集合排序
    fiddler还是浏览器的问题
  • 原文地址:https://www.cnblogs.com/lxcmyf/p/7404414.html
Copyright © 2011-2022 走看看