标签: 设计模式
编程

PHP 中间件模式的工作原理及如何使用

93 2024-04-16 03:48:00

在这篇文章中,我们将研究 PHP 中的中间件。这种模式在处理请求和响应时最为常见。但是中间件模式也可以应用于其他各种地方。我们将研究什么是中间件,中间件是如何工作的,中间件何时有用,以及中间件的替代方案是什么。注意: 中间件模式不是“Gang of Four”介绍的模式的一部分,但我个人仍然将其视为一种模式,因为它可以应用于各种情况。什么是中间件呢?PHP ...

详情...
编程

PHP 没有多继承的原因

167 2024-03-20 09:23:00

多年来,PHP 作为一种语言已经有了很大的发展。从最初由 Rasmus Lerdorf 作为他的业余项目开始的一种简单的函数式脚本语言,到支持面向对象编程功能 PHP,已经走过了漫长的道路。尽管 PHP 在其每一个版本中都在实现和改进面向对象编程的功能,但有一个功能是缺失的,我一直想知道为什么这些年来 PHP 中没有这个功能,即多继承。PHP 不支持多继承有...

详情...
编程

设计模式之状态(State)模式

223 2024-03-02 01:14:00

意图状态(State)模式是一种行为设计模式,允许对象在内部状态改变时修改器对象行为。

详情...
编程

PHP 中的访问者模式

216 2024-02-24 08:25:00

访问者模式不常使用。这是因为只有在少数情况下它是适用的,甚至是有意义的。然而,当时机成熟时,这是一个很好的模式。让我们看看如何在 PHP 环境中应用此模式。🛑 问题与其他一些模式一样,访问者模式试图解决在不更改实体的情况下向实体添加功能的问题(很多…)。除了这个非常普遍的问题外,它还提供了一种将功能添加到多个类似实体的方法,而这些实体无法以相同的方式完全处理...

详情...
编程

设计模式之策略(Strategy)模式

231 2024-02-21 23:52:00

策略(Strategy)模式是一种行为设计模式,允许你定义一系列算法,将每个算法放入一个单独的类中,并使它们的对象可互换。

详情...
编程

设计模式之访问者(Vistor)模式

247 2024-02-19 22:18:00

访问者(Visitor)模式是一种行为模式,允许你将算法与它们的操作对象上分离。问题描述:假设你的团队开发了一款应用,它可以处理构造成一个巨大图形的地理信息。图中的每个节点可以代表一个复杂的实体,如城市,也可以代表更精细的东西,如工业、观光区等。如果节点所代表的真实对象之间存在道路,则这些节点与其他节点相连接。在底层中,每个节点类型...

详情...
编程

Repositories 及其真实意图

184 2024-02-16 01:39:00

由于使用了 Repository 模式,你已经替换了多少次底层数据库实现?这就是为什么,在这篇博文中,我想进一步澄清这个完全被误解的软件设计模式,以及为什么反对使用它的第一个论点(上面的问题)实际上是微不足道的,几乎无关紧要。定义 Repository首先,让我们从定义 Repository 实际是什么开始。Repository 模式在 PoEAA 中定义如...

详情...
编程

设计模式之备忘录(Memento)模式

234 2024-02-14 01:29:00

又名: 快照模式(Snapshot)意图备忘录(Memento)模式是一种行为设计模式,允许你在不暴露实现细节的情况下,保存及恢复对象的前一种状态。问题描述想象一下,你正在创建一个文本编辑器应用。除了简单的文本编辑外,编辑器还可以格式化文本、插入内联图像等。在某个时刻,你决定让用户撤消对文本执行的任何操作。多年来,这一功能变得如此普遍,以至于现在人们希望每个...

详情...
编程

设计模式之单例(Singleton)模式

252 2024-02-04 01:31:00

意图单例(Singleton)模式一种创建型的设计模式,可以确保类只有一个实例,同时为该实例提供全局访问点。问题描述单例模式同时解决了两个问题,违反了单一职责原则。确保一个类只有一个实例。为什么有人要控制一个类由多少各实例呢?最常见的原因是控制对某些共享资源的访问,例如数据库或文件。它的工作原理如下:想象一下你创建了一个对象,但过了一段时间后决定创建一个新对...

详情...
编程

设计模式之责任链(Chain of Responsibility)模式

188 2024-02-01 23:02:00

责任链(Chain of Responsibility )模式是一种行为设计模式,允许沿着处理程序链传递请求。收到请求后,每个处理程序决定处理该请求或将其传递给链中的下一个处理程序。问题描述假设你正在开发一个在线订单系统。您希望限制对系统的访问,以便只有经过身份验证的用户才能创建订单。此外,具有...

详情...