`
xiaolixv
  • 浏览: 3517 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

JAVA设计模式-读书笔记四(建造者模式)

阅读更多

建造者模式

1          建造者模式特点:

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

2          产品内部表象:

一个产品常有不同的组成成分做为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常叫做产品的内部表象。不同的产品可以有不同的内部表象,也就是不同的零件。建造者模式可以使客户端不需要知道所生成的产品对象有哪些零件,每个产品对应的零件彼此有何不同,是怎么建造出来的,以及怎样组成产品的。

3          简略类图: 略

4          建造者模式的角色:

4.1         抽象建造者(Builder):给出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此接口独立于应用程序的商业逻辑。

4.2         具体建造者(Concrete Builder):与应用程序紧密相关的一些类,它们调用创建产品的实例。该角色的主要任务包括:

1、         实现抽象建造者(Builder)的接口,给出一步一步地完成创建产品实例的操作。

2、         在建造过程完成后,提供产品的实例。

4.3         导演者(Director):调用具体的建造者(Concrete Builder)以创建产品对象,该角色没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者(Concrete Builder)。该角色的与客户端打交道,并且把客户端的创建产品的请求划分为对各个零件的建造请求,然后在把这些请求委派给具体的建造者角色。

4.4         产品(Product):建造中的复杂对象。

5          源码实现:

5.1         导演者(Director)

package org.pattern.builder;

 

public class Director {

 

  private Builder builder;

 

  /*

   * 产品构造方法,负责调用各个零件的建造方法;提供给客户端的主要接口

   */

  public void construct(){

     

      builder=new ConcreteBuilder();

      builder.buildPart1();

      builder.buildPart2();

      builder.retrieveResult();

  }

}

5.2         具体建造者(Concrete Builder):

package org.pattern.builder;

 

public class ConcreteBuilder extends Builder {

 

    private Product product;

   

    @Override

    public void buildPart1() {

       

       

    }

 

    @Override

    public void buildPart2() {

       

       

    }

 

    @Override

    public Product retrieveResult() {

       

        return product;

    }

 

}

}

5.3         抽象建造者(Builder)

package org.pattern.builder;

 

public abstract class Builder {

 

  /*

   * 产品零件构造方法

   */

  public abstract void buildPart1();

 

  /*

   * 产品零件构造方法

   */

  public abstract void buildPart2();

 

 

  /*

   * 产品返回方法

   */

  public abstract Product retrieveResult();

}

5.4         产品(Product)

package org.pattern.builder;

 

public class Product {

 

}

 

6          在什么情况下使用建造模式

6.1         需要生成的产品对象有复杂的内部结构。每一个内部成分本身可以是一个对象,也可以仅仅是一个对象(产品对象)的一个组成部分。

6.2         需要生成的产品对象的属性相互依赖。

6.3         对象的创建过程中会使用到系统中的其他一些对象,这些对象在产品对象的创建过程中不易得到。

7          与抽象工厂模式区别

抽象工厂模式中,每次工厂对象被调用都返回一个完整的产品对象,而客户端有可能决定把这些产品组成一个更大更复杂的产品,也有可能不会。构造类是一点点的建造出一个复杂的产品,这个产品的组装过程发生在构造者的内部。建造者模式的客户端拿到的是一个完整的最后产品。也就是说,建造者模式处于更加宏观的尺度上,而抽象工厂模式出在更加具体的尺度。

一个系统的客户端可以通过调用建造角色,间接地调用抽象工厂模式的工厂角色,工厂模式返回不同的产品族的零件,而建造者模式把它们组装起来。

分享到:
评论

相关推荐

    Java 版设计模式学习笔记-java-design-patterns.zip

    以上只是部分Java设计模式的概述,实际的学习笔记中可能还包括这些模式的实现示例、应用场景以及优缺点分析等,这些都是提高软件设计能力的重要资料。通过深入理解和实践这些设计模式,开发者可以编写出更加高效、可...

    根据《JAVA与设计模式》整理的笔记及示例代码

    这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...

    图解java设计模式_学习笔记_java开发

    这份"图解java设计模式_学习笔记"是针对Java开发者深入理解和应用设计模式的重要资源。在这里,我们将深入探讨Java设计模式的核心概念、分类以及它们在实际开发中的应用。 设计模式分为三大类:创建型、结构型和...

    java设计模式源码和笔记(第一部分)

    本资料包“java设计模式源码和笔记(第一部分)”提供了对Java设计模式的深入理解和实践。其中包含了个人的学习笔记和Eclipse环境下实现的源码,方便读者导入后直接运行,进行实践操作。 1. **单例模式**:确保一个...

    Java设计模式学习笔记.pdf

    在学习Java设计模式时,掌握其概念、应用、优点和缺点非常重要。设计模式是软件开发中经常使用的一种通用解决方案模板,用于解决特定上下文中的常见问题。它们源于设计模式的研究,通常被认为是软件设计中的最佳实践...

    尚硅谷设计模式源码笔记课件.zip

    共150讲,时长共 33...1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括...

    计算机后端-Java-图解java设计模式笔记.zip

    本压缩包"计算机后端-Java-图解java设计模式笔记"提供了对Java设计模式的深入理解,通过图形化的方式帮助开发者更好地理解和应用这些模式。 1. **单例模式**:保证一个类只有一个实例,并提供一个全局访问点。常见...

    图解Java设计模式笔记总结word版本.rar

    本资料“图解Java设计模式笔记总结word版本”聚焦于通过图文并茂的方式,深入浅出地解析各种设计模式。以下是基于这个主题的详细知识点讲解: 1. **设计模式的分类** - **创建型模式**:如单例(Singleton)、工厂...

    300Java设计模式部分学习笔记

    以下是一些在尚学堂300Java设计模式部分学习笔记中涉及的设计模式的知识点: 创建型模式: 创建型模式主要解决对象创建的问题,确保系统的灵活性和封装创建细节。学习笔记中提到了5种创建型模式: 1. 单例模式...

    尚硅谷_韩顺平_图解Java设计模式

    《尚硅谷_韩顺平_图解Java设计模式》是一份详尽的Java设计模式学习资料,由知名教育机构尚硅谷的讲师韩顺平精心编撰。这份笔记全面覆盖了设计模式的重要概念、应用场景以及实战技巧,是Java开发者学习和复习设计模式...

    JAVA与模式读书笔记。

    在《JAVA与模式读书笔记》中,我们探讨的是Java编程语言与设计模式的结合应用,这对于深入理解面向对象编程和提升软件开发能力至关重要。设计模式是软件工程中的最佳实践,它们是解决常见问题的模板,可以提高代码的...

    java设计模式学习笔记,以及各种模式的代码实现

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。这些模式是面向对象编程中的一种最佳实践,通过标准化的方式处理常见的设计问题。下面...

    Java设计模式尚硅谷笔记

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。在Java编程中,设计模式被视为良好编程实践的重要组成部分,可以帮助开发者创建更加高效...

    java 设计模式自学的笔记的

    这些设计模式的学习通常需要结合具体的代码示例和实际项目经验,通过阅读笔记中的源码分析,可以帮助我们更好地理解和掌握这些模式的应用场景和实现方式。同时,利用相关的开发工具,如IDEA的重构功能,可以方便地...

    java后端-面试笔记和面试资料

    Java后端开发是软件行业中一个重要的领域,涵盖了各种技术和概念,包括但不限于编程语言特性、框架、数据库、设计模式、并发处理、性能优化等。这里,我们主要基于"java后端-面试笔记和面试资料"这一主题,深入探讨...

    设计模式笔记

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。

    java23种设计模式,3套视频加1个ppt

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。23种设计模式被广泛接受并分类为三大类:创建型模式(Creational Patterns)、结构型...

    《Hear First设计模式》阅读笔记

    《Hear First设计模式》是一本关于设计模式的著作,其内容主要涵盖了Java语言中的设计模式应用。这本书通过深入浅出的方式,引导读者理解和掌握设计模式这一软件开发中的重要概念。设计模式是解决常见问题的经验总结...

    java学习笔记及设计模式

    Java学习笔记及设计模式是程序员进阶过程中必不可少的资源,涵盖了广泛的Java基础知识和高级概念,同时结合了设计模式这一软件工程的重要组成部分。本资源集合旨在帮助开发者深化对Java语言的理解,提升编程技能,并...

Global site tag (gtag.js) - Google Analytics