`

设计模式学习笔记——构造者模式(生成器模式)

阅读更多

构造者模式(又叫生成器模式 Builder Pattern

将一个复杂对象(下面说的车,手机等)的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

 

首先看UML

 

可以看到他主要的3个部分,还是借鉴大家普遍采用的汽车制造来说明

首先是一个抽象类BuilderBuilder中声明了一个具体产品各部件所需要的抽象方法以及一个返回最终产品的抽象方法。比如建造轮胎,建造引擎,建造外壳……以及一个返回最终产品车的方法

public abstract class Builder {
	public abstract void buildEngine();
	public abstract void bulidTyre();
	public abstract void buildCar();
	public abstract void getCar();
}

 其次,是下面的具体实现类ConcreeteBuilder,这也是构造者模式的最主要部分,他负责详细的去定义每个部件的具体制作,也就是不同的ConcreeteBuilder实现不同的建造轮胎,引擎,外壳的方法,比如我们具体类分别为BMWFord。。。

public class BMW extends Builder{
	public void buildCar() {
		...//造外壳细节
	}
	public void buildEngine() {
		...//造引擎
		
	}
	public void bulidTyre() {
		...//造轮胎
	}
	public Car getCar() {
		return new Car();
	}
}

 最后,是一个Director类,他类似于一个发令员,在汽车制造中,就是负责组装,将各个部件组合成最终产品,交还给客户,调用一个Builder类对象,并指导完成各步建造

public class Director {
	public void product(Builder builder){
		builder.buildCar();
		builder.buildEngine();
		builder.bulidTyre();
	}
}

 到此为止,生成器模式就完成了,来看看如何去制造一个具体的产品返回给客户

public class Client {
	public static void main(String args[]){
		Builder builder=new BMW();//创建一个Builder对象
		Director director=new Director();//创建一个Director对象
		director.product(builder);//Director对象造车
		builder.getCar();//将制造的车返回
	}
}

 

最终我们的构造者/生成器模式,带给我们了这样的结果

●生成器模式可以改变它所构建的产品的内部表示,另外还隐藏了产品如何装配的细节(Director

●每个特定的生成器与其他生成器以及程序的其余部分无关。这增强了程序的模块性,并使增加额外模块变得相对简单(很明显,只要再实现一个新的ConcreeteBuilder即可)

●由于每个生成器都是根据数据逐步构建最终产品的,因此可以对生成器所构建的每个最终产品拥有更多的控制(在ConcreeteBuilder中)

 

总结下生成器模式与抽象工厂的区别,他们都返回由多个方法和对象组成的类

抽象工厂模式返回一系列相关的类

生成器模式根据所提供的数据将逐步构建一个复杂的对象

如果对比抽象工厂中举的手机例子,我的理解是,生成模式将为每个手机的建造提供一致的方法,比如建造外壳(Nokia),建造电池,建造芯片,安装系统。。。。。可以明显看出2个设计模式的区别

  • 大小: 10.2 KB
分享到:
评论

相关推荐

    RRT学习笔记——记录

    RRT学习笔记——记录

    web学习笔记 —— DAO设计模式

    DAO(Data Access Object)设计模式是一种软件设计模式,主要用于数据库操作的封装,它将业务逻辑与数据访问逻辑分离开来,使得系统更加模块化,提高了代码的可复用性和可测试性。在Web开发中,DAO模式是常用的数据...

    学习笔记——资料

    这份"学习笔记——资料"涵盖了Java学习的各个方面,旨在帮助初学者和有经验的开发者巩固基础,提升技能。以下是对这份资料的详细解读: 1. **Java基础** - **变量与数据类型**:Java提供了基本数据类型如整型(int...

    Python学习笔记——运算符

    Python学习笔记——运算符 运算符: 赋值运算符 算术运算符 关系运算符 逻辑运算符 位运算

    jsp学习笔记——初学者的选择

    【JSP学习笔记——初学者的选择】 JSP(JavaServer Pages)是JavaEE平台中用于构建动态网页的应用技术。作为初学者,理解JSP的基本概念和技术特性至关重要。 1. **为何选择JSP?** JSP的出现主要是为了解决...

    java设计模式学习笔记

    ### Java设计模式学习笔记——外观模式(Facade Pattern) #### 概述 设计模式是软件工程领域中一种解决常见问题的可复用解决方案。在Java开发过程中,掌握设计模式能够帮助开发者更好地组织代码结构,提高代码的...

    JAVA学习笔记————————

    通过阅读和学习这些JAVA学习笔记,开发者不仅可以掌握JAVA编程的基本技能,还能深入了解其设计理念,从而更好地应对各种实际开发问题。不断更新和完善自己的JAVA知识体系,对于成为一名优秀的JAVA开发者至关重要。

    《设计模式学习笔记》

    《设计模式学习笔记》主要探讨了GOF的23种设计模式以及类设计的基本原则,旨在帮助开发者理解和应用这些经过时间验证的成熟解决方案。设计模式是面向对象软件设计中的核心概念,它们为解决常见的设计问题提供了标准...

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    ArcGIS客户端开发学习笔记——XML学习

    ArcGIS客户端开发学习笔记——XML学习

    2024数据结构-学习笔记-入门必看建议收藏

    2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据...

    A星算法学习笔记——记录

    A星算法学习笔记——记录

    设计模式学习笔记总结

    这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...

    Python学习笔记——对象和类

    Python学习笔记——对象和类

    Python学习笔记——输入input()

    Python学习笔记——输入input(),input()使用,两个练习。

    设计模式学习笔记大全

    以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...

Global site tag (gtag.js) - Google Analytics