zoukankan      html  css  js  c++  java
  • 第十三章 建造者模式

    建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。

    import java.util.LinkedList;
    import java.util.List;
    
    /**
     * Created by hero on 16-4-3.
     */
    public class Product {
        private List<String> parts = new LinkedList<>();
    
        public void add(String part) {
            parts.add(part);
        }
    
        public void show() {
            for (String p : parts) {
                System.out.print(p + "	");
            }
            System.out.println();
        }
    }
    /**
     * Created by hero on 16-4-3.
     */
    public abstract class Builder {
        public abstract void buildPartA();
    
        public abstract void buildPartB();
    
        public abstract Product getResult();
    }
    /**
     * Created by hero on 16-4-3.
     */
    public class ConcreteBuilder1 extends 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;
        }
    }
    /**
     * Created by hero on 16-4-3.
     */
    public class ConcreteBuilder2 extends 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;
        }
    }
    /**
     * Created by hero on 16-4-3.
     */
    public class Director {
        public void Construct(Builder builder) {
            builder.buildPartA();
            builder.buildPartB();
        }
    }
    public class Main {
    
        public static void main(String[] args) {
            Director director = new Director();
            ConcreteBuilder1 concreteBuilder1 = new ConcreteBuilder1();
            ConcreteBuilder2 concreteBuilder2 = new ConcreteBuilder2();
            Product product = null;
            director.Construct(concreteBuilder1);
            product = concreteBuilder1.getResult();
            product.show();
            director.Construct(concreteBuilder2);
            product = concreteBuilder2.getResult();
            product.show();
        }
    }
  • 相关阅读:
    L1-050 倒数第N个字符串 (15分)
    Oracle存储过程的疑难问题
    Linux的细节
    Linux字符设备和块设备的区别
    Shell变量
    游标的常用属性
    Oracle中Execute Immediate用法
    Oracle中的sqlerrm和sqlcode
    Oracle把一个表的数据复制到另一个表中
    Oracle的差异增量和累积增量
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5350066.html
Copyright © 2011-2022 走看看