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();
        }
    }
  • 相关阅读:
    Linux就该这么学(第一天)
    在虚拟机中使用Git
    Myeclipse的一些快捷键整理(转)
    SpringMVC框架应用
    动态网页开发基础
    jsp数据交互(二)
    jsp数据交互(一)
    复习数据结构(基于大话数据结构)
    IO及NIO的总结
    学习正则表达式笔记
  • 原文地址:https://www.cnblogs.com/lxcmyf/p/7404414.html
Copyright © 2011-2022 走看看