zoukankan      html  css  js  c++  java
  • Builder

    建造模式

    有些情况,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象都不能为一个完整的产品使用。比如一封Email,必须有发件人地址、主题、内容等信息,否则是不能发送出去的。此时,这对象相当于一个有待建造的产品,而对象的性质相当于产品的零件。建造产品的过程就是建造零件的过程,建造者返回给客户端的是一个全部零件都建造好的产品对象。

    在这个示意的UML图,最终产品 Product 只有两个零件:part1 和 part2 , 相应的建造方法是 builderPart1 和 builderPart2 。

    • 抽象建造者(Builder)角色:给出一个抽象接口,给规范产品的对象的各个组成成分的建造。具体建造者除了建造的方法之外,还要有一个返回结果的方法(retrieveResult)。一般来说,有多少零件,就有多少个建造方法。
    • 具体建造者(Concrete Builder):创建产品的实例
    • 导演者(Director):调用建造者角色以及其产品,导演者并没有产品类的具体知识,真正拥有产品类的具体知识是建造者角色。
    • 产品(Product):建造中的复杂对象。在系统中会多于一个产品类,而且这些产品类不一定同一个接口,可以完全无关联的。
    public abstract class Builder {
    
        public abstract void builderPart1();
    
        public abstract void builderPart2();
    
        public abstract Product retrieveResult();
    }
    public class ConcreteBuilder extends Builder {
    
        private Product product = new Product();
        
        @Override
        public void builderPart1() {
            product.add("-- builderPart1");
        }
    
        @Override
        public void builderPart2() {
            product.add("-- builderPart2");
        }
    
        @Override
        public Product retrieveResult() {
            return product;
        }
    
    }
    public class Product {
    
        private LinkedList<String> parts = new LinkedList<String>();
    
        public void add(String part) {
            parts.add(part);
        }
    
        public void show() {
            for (String part : parts) {
                System.out.println(part);
            }
        }
    
    }
    public class Director {
    
        private Builder builder;
        
        public Director(){
            
        }
        
        public void construct(){
            builder = new ConcreteBuilder();
            builder.builderPart1();
            builder.builderPart2();
            builder.retrieveResult();
        }
        
    }
  • 相关阅读:
    java泛型介绍
    JavaWeb---总结(十九)Session机制
    ServiceWorker入门介绍一
    Ehcache入门介绍一
    Hadoop入门介绍一
    给安卓端调用的短信发送接口demo
    Java开发需要注意的流程
    一些题
    省选模拟3
    省选模拟2
  • 原文地址:https://www.cnblogs.com/xuekyo/p/2830384.html
Copyright © 2011-2022 走看看