设计模式——创建将模式总结

简介: 设计模式——创建将模式总结

设计模式分类

创建型

创建型模式设计到将对象实例化,这类模式都提供一个方法,将客户从所需实例化的对象中解耦

结构型

结构型模式可以让你把类或对象组合到更大的结构中。

行为型

行为型,都设计到类和对象如何交互及分配职责

创建型模式

创建型模式分类


解读:为什么将创建型模式分为直接和间接???

分类的主要依据是客户端想要一个具体的产品,是否通过了第三方。


直接:

如单例模式,如果客户端想要一个具体的产品,是直接类名.方法名,当然客户端不知道类里面的具体细节。

如:原型模式,如果客户端想要一个具体的产品,是直接调用克隆的方法。


间接:

如工厂方法模式,如果客户端想要一个具体的产品,他需要通过使用具体的工厂返回一个具体的产品。

如抽象工厂和工厂方法一致。也是通过使用具体的工厂。

如建造者,如果客户端想要一个具体的产品,他需要使用指挥者来指挥具体的建造者来创建具体的产品。

单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点

图与代码的对应(图和代码皆引用自大话设计模式


要点

1.单例模式通过将他的构造方法的访问修饰符设置为Private,是外部无法通过new的方式来获取他的一个对象,也就无法使用到类里面的方法。

2.通过声明唯一一个静态的私有的全局变量,并且声明一个Public ,Static的方法,使成为唯一一个外部能够访问的点。

3.这个公共的 静态的方法,保证了这个类只能被实例化一次。


可以看到在客户端如果想要一个产品是直接使用类名.方法名来获取


使用场景

例如:C#中通过命令按钮显示窗体的时候,会发生每点击一次就会有一个新的窗体冒出来,使用单例模式可以很好的解决这个问题。

原型模式

用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

图和代码的对应(图和代码皆引用自大话设计模式)

要点

1.利用MeberWiseClone()这个方法进行克隆

2.ConcretePrototype1类重写了返回值为Prototype的Clone()方法

3.在客户端需要实例化一个具体原型类,在使用Clone()进行克隆,特别注意的是ConcretePrototype c1=(ConcretePrototype)p1.Clone()中存在一个强制转换(ConcretePrototype),为什么这儿需要一个强制转换呢?是因为在ConcretePrototype1中Clone()方法的返回值为Prototype,所以这儿需要一个强制转换。子类可以属于父类,但是父类不能属于子类。


应用场景

如写简历,首先需要自己制作一份简历,去投简历的时候,不可能只投一家公司,也不可能只有一份简历,你可能需要十几份简历。如果没有使用克隆技术,你就得手工一份一份的做,如果运用了克隆,像打印机之类的很快就能制作好成百上千的简历。

建造者模式

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

图和代码的对应(引用自大话设计模式)

要点

1.当客户端想要一个产品的时候,他需要调用指挥者,然后指挥者来调用具体的建造者。

这也就是将复杂对象的构建与它的便是分离,客户端不知建造的过程和细节。


2.可以通过修改具体建造者中的参数,达到同样的建造过程,但具有不同的表示,最后建造出来的产品不一样。


应用场景

需要构建一个复杂的小人对象的时候,建造小人需要建造头部,手,脚。

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

图和代码对应(引用自大话设计模式)

要点:

1.客户端想要得到一个产品,他需要使用具体的工厂来返回一个产品,也就是通过具体工厂中的方法来进行实例化。

2.客户端不知道具体的实现过程,和具体的产品类。

抽象工厂模式

提供一个创建一系列相关或相互依赖对象的结构,而无需指定他们具体的类。

图和代码的对应

要点

1.抽象工厂和工厂方法的主要区别是工厂方法主要应用与同一类产品,当需要增加多个产品族的时候就需要使用抽象工厂了。

2.抽象工厂同工厂方法的使用过程都是通过具体工厂来返回产品。

目录
相关文章
|
5天前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
19天前
|
设计模式 算法 安全
设计模式——模板模式
模板方法模式、钩子方法、Spring源码AbstractApplicationContext类用到的模板方法
设计模式——模板模式
|
12天前
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。
|
9天前
|
设计模式 Java Spring
spring源码设计模式分析-代理设计模式(二)
spring源码设计模式分析-代理设计模式(二)
|
7天前
|
设计模式 Java
Java设计模式-工厂方法模式(4)
Java设计模式-工厂方法模式(4)
|
2月前
|
设计模式
设计模式-单一职责模式
设计模式-单一职责模式
|
2月前
|
设计模式 XML 存储
【二】设计模式~~~创建型模式~~~工厂方法模式(Java)
文章详细介绍了工厂方法模式(Factory Method Pattern),这是一种创建型设计模式,用于将对象的创建过程委托给多个工厂子类中的某一个,以实现对象创建的封装和扩展性。文章通过日志记录器的实例,展示了工厂方法模式的结构、角色、时序图、代码实现、优点、缺点以及适用环境,并探讨了如何通过配置文件和Java反射机制实现工厂的动态创建。
【二】设计模式~~~创建型模式~~~工厂方法模式(Java)
|
2月前
|
设计模式 XML Java
【一】设计模式~~~创建型模式~~~简单工厂模式(Java)
文章详细介绍了简单工厂模式(Simple Factory Pattern),这是一种创建型设计模式,用于根据输入参数的不同返回不同类的实例,而客户端不需要知道具体类名。文章通过图表类的实例,展示了简单工厂模式的结构、时序图、代码实现、优缺点以及适用环境,并提供了Java代码示例和扩展应用,如通过配置文件读取参数来实现对象的创建。
【一】设计模式~~~创建型模式~~~简单工厂模式(Java)
|
2月前
|
设计模式 uml C语言
设计模式----------工厂模式之简单工厂模式(创建型)
这篇文章详细介绍了简单工厂模式,包括其定义、应用场景、UML类图、通用代码实现、运行结果、实际应用例子,以及如何通过反射机制实现对象创建,从而提高代码的扩展性和维护性。
设计模式----------工厂模式之简单工厂模式(创建型)
|
2月前
|
设计模式 uml
设计模式-------------工厂模式之工厂方法模式(创建型)
工厂方法模式是一种创建型设计模式,它通过定义一个用于创建对象的接口,让子类决定实例化哪一个类,从而实现类的实例化推迟到子类中进行,提高了系统的灵活性和可扩展性。