zoukankan      html  css  js  c++  java
  • 建造者模式

    建造者模式可以将一个产品的内部表象(产品的零件)与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

    产品类:

    package com.javapatterns.builder;

    public class Product
    {
        
    public Product()
        
    {
           
    // System.out.println("product is initing.");
        }

    }

     

    抽象建造方法:
    abstract public class Builder
    {
        
    public abstract void buildPart1();

        
    public abstract void buildPart2();

        
    public abstract Product retrieveResult();
    }
     

     

    具体的建造类:产品的零件制造

    public class ConcreteBuilder extends Builder
    {
        
    /**
         * @label Creates
         
    */

        
    private Product product = new Product() ;

        
    public void buildPart1()
        
    {
            System.out.println(
    "build part one.");
        }


        
    public void buildPart2()
        
    {
            System.out.println(
    "build part two.");
        }


        
    public Product retrieveResult()
        
    {
            
    return product;
        }

    }

     

    产品的建造过程:

    public class Director
    {
        
    /**
         * 
    @link aggregation
         * @directed
         * @clientRole builder
    */

        
    private Builder builder;

        
    public Director(Builder builder)
        
    {
            
    this.builder = builder;
        }


        
    public void construct()
        
    {
            builder 
    = new ConcreteBuilder();

            builder.buildPart1();

            builder.buildPart2();

            builder.retrieveResult();

            
    //continue with other code
        }

    }

     

    测试

    public class Client
    {
        
    /**
         * 
    @link aggregation
         * @directed 
         
    */

        
    private static Director director;

        
    private static Builder builder = new ConcreteBuilder();
            
        
    public void requestBuild()
        
    {
           
    // director = new Director(builder);
        }

        
         
    public static void main(String[] args) 
        
    {
            director 
    = new Director(builder);
            director.construct();
        }


    }

     

  • 相关阅读:
    zz[读书笔记]《Interpretable Machine Learning》
    Xgboost,LightGBM 和 CatBoost
    zz:Xgboost 导读和实战
    bzoj3252: 攻略 优先队列 并查集 贪心
    [BeiJing2009 WinterCamp]取石子游戏 Nim SG 函数
    Playing With Stones UVALive
    Division Game UVA
    [BJWC2011]禁忌 AC 自动机 概率与期望
    [Jsoi2010]连通数 bitset + Floyd
    洛谷P2197 nim游戏模板
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1933240.html
Copyright © 2011-2022 走看看