建造者模式
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与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...
这份"图解java设计模式_学习笔记"是针对Java开发者深入理解和应用设计模式的重要资源。在这里,我们将深入探讨Java设计模式的核心概念、分类以及它们在实际开发中的应用。 设计模式分为三大类:创建型、结构型和...
本资料包“java设计模式源码和笔记(第一部分)”提供了对Java设计模式的深入理解和实践。其中包含了个人的学习笔记和Eclipse环境下实现的源码,方便读者导入后直接运行,进行实践操作。 1. **单例模式**:确保一个...
在学习Java设计模式时,掌握其概念、应用、优点和缺点非常重要。设计模式是软件开发中经常使用的一种通用解决方案模板,用于解决特定上下文中的常见问题。它们源于设计模式的研究,通常被认为是软件设计中的最佳实践...
本压缩包"计算机后端-Java-图解java设计模式笔记"提供了对Java设计模式的深入理解,通过图形化的方式帮助开发者更好地理解和应用这些模式。 1. **单例模式**:保证一个类只有一个实例,并提供一个全局访问点。常见...
本资料“图解Java设计模式笔记总结word版本”聚焦于通过图文并茂的方式,深入浅出地解析各种设计模式。以下是基于这个主题的详细知识点讲解: 1. **设计模式的分类** - **创建型模式**:如单例(Singleton)、工厂...
以下是一些在尚学堂300Java设计模式部分学习笔记中涉及的设计模式的知识点: 创建型模式: 创建型模式主要解决对象创建的问题,确保系统的灵活性和封装创建细节。学习笔记中提到了5种创建型模式: 1. 单例模式...
在《JAVA与模式读书笔记》中,我们探讨的是Java编程语言与设计模式的结合应用,这对于深入理解面向对象编程和提升软件开发能力至关重要。设计模式是软件工程中的最佳实践,它们是解决常见问题的模板,可以提高代码的...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。这些模式是面向对象编程中的一种最佳实践,通过标准化的方式处理常见的设计问题。下面...
《尚硅谷_韩顺平_图解Java设计模式》是一份详尽的Java设计模式学习资料,由知名教育机构尚硅谷的讲师韩顺平精心编撰。这份笔记全面覆盖了设计模式的重要概念、应用场景以及实战技巧,是Java开发者学习和复习设计模式...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。在Java编程中,设计模式被视为良好编程实践的重要组成部分,可以帮助开发者创建更加高效...
共150讲,时长共 33...1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括...
这些设计模式的学习通常需要结合具体的代码示例和实际项目经验,通过阅读笔记中的源码分析,可以帮助我们更好地理解和掌握这些模式的应用场景和实现方式。同时,利用相关的开发工具,如IDEA的重构功能,可以方便地...
Java后端开发是软件行业中一个重要的领域,涵盖了各种技术和概念,包括但不限于编程语言特性、框架、数据库、设计模式、并发处理、性能优化等。这里,我们主要基于"java后端-面试笔记和面试资料"这一主题,深入探讨...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。23种设计模式被广泛接受并分类为三大类:创建型模式(Creational Patterns)、结构型...
《Hear First设计模式》是一本关于设计模式的著作,其内容主要涵盖了Java语言中的设计模式应用。这本书通过深入浅出的方式,引导读者理解和掌握设计模式这一软件开发中的重要概念。设计模式是解决常见问题的经验总结...
Java学习笔记及设计模式是程序员进阶过程中必不可少的资源,涵盖了广泛的Java基础知识和高级概念,同时结合了设计模式这一软件工程的重要组成部分。本资源集合旨在帮助开发者深化对Java语言的理解,提升编程技能,并...