• 第十三章 建造者模式


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

    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();
        }
    }
  • 相关阅读:
    python面对对象编程------3:写集合类的三种方法
    python面对对象编程----2:__init__
    python面对对象编程----1:BlackJack(21点)
    wxpython下的桥梁信息管理系统
    python运行时间计算之timeit
    python单元测试之unittest
    python 下的数据结构与算法---8:哈希一下【dict与set的实现】
    python 下的数据结构与算法---7:查找
    python 下的数据结构与算法---6:6大排序算法
    分布式一致性算法Raft
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5350066.html
Copyright © 2020-2023  润新知