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

    概念: 

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    实例:

    1、Builder:为创建一个产品对象的各个部件指定抽象接口。
    2、ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
    3、Director:构造一个使用Builder接口的对象,指导构建过程。
    4、Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

    1.创建接口Builder

    public interface Builder {
    public void buildPart1();
    public void buildPart2();
    public Product retrieveResult();
    }

    2.创建类ConcreteBuilder 实现 Builder接口。

    public class ConcreteBuilder implements Builder {

    private Product product = new Product();
    /**
    * 产品零件建造方法1
    */
    @Override
    public void buildPart1() {
    //构建产品的第一个零件
    product.setPart1("编号:AAAA");
    }
    /**
    * 产品零件建造方法2
    */
    @Override
    public void buildPart2() {
    //构建产品的第二个零件
    product.setPart2("名称:建造者");
    }
    /**
    * 产品返还方法
    */
    @Override
    public Product retrieveResult() {
    return product;
    }

    }

    3.创建类Director负责组装

    public class Director {
    /**
    * 持有当前需要使用的建造器对象
    */
    private Builder builder;
    /**
    * 构造方法,传入建造器对象
    * @param builder 建造器对象
    */
    public Director(Builder builder){
    this.builder = builder;
    }
    public Director(){

    }
    /**
    * 产品构造方法,负责调用各个零件建造方法
    */
    public void construct(){
    builder.buildPart1();
    builder.buildPart2();
    }
    /**
    * 产品构造方法,负责调用各个零件建造方法
    * @return
    */
    public Product construct(Builder pd){
    pd.buildPart1();
    pd.buildPart2();
    return pd.retrieveResult();
    }
    }

    4.创建类Product 产品类

    public class Product {
    private String part1;
    private String part2;
    public String getPart1() {
    return part1;
    }
    public void setPart1(String part1) {
    this.part1 = part1;
    }
    public String getPart2() {
    return part2;
    }
    public void setPart2(String part2) {
    this.part2 = part2;
    }
    @Override
    public String toString() {
    return "产品简介: [part1=" + part1 + ", part2=" + part2 + "]";
    }
    }

    5.创建Client测试类

    public class Client {
    public static void main(String[]args){
    Director director = new Director();
    Builder builder=new ConcreteBuilder();
    Product product=director.construct(builder);
    System.out.println(product.toString());
    }
    }

  • 相关阅读:
    2009中国IT界名人
    jQuery简介
    Spring下载地址
    ContextLoaderListener
    MyBatisUtil类
    SSM事务
    后台管理中心跳转问题解决
    mybatis返回boolean值时数据库返回null
    yarn作业提交过程
    Hadoop集群运行wordcount jar包出错
  • 原文地址:https://www.cnblogs.com/cyz110/p/6384999.html
Copyright © 2011-2022 走看看