在软件工程理论中,术语“设计模式”通常是指一种可重用的解决方案,它可以用作开发应用程序以解决常见问题的模板。在开发软件解决方案时,您可以将软件设计模式视为正式的最佳实践。
大多数标准设计模式都可以在 PHP 中开发应用程序时非常有效地实现。在本章中,我们将学习如何在开发 PHP 应用程序时应用一些流行的设计模式。
单例模式 (Singleton Pattern)
当您希望将某个类的对象的实例化限制为仅一个实例时,单例设计模式非常有用。“单例模式”这个名字来源于数学中单例的概念。单例模式确保只有一个实例,在整个应用程序中具有对该实例的全局访问权限。
单例模式的典型应用是创建数据库连接对象,该对象必须在应用程序的生命周期中创建一次。
例子
在下面的代码中,DataBaseConnector 类只能实例化一次,否则将发出不允许重复对象的消息。
它将产生以下输出 -
connection object could not be created again
bool(false)
工厂模式 (Factory Pattern)
这是最常用的设计模式之一。在此模式中,您不直接声明所需类的对象,而是提供另一个类,其 static 方法创建所需的对象。
以下示例演示了工厂设计模式的工作原理 -
它将产生以下输出 -
策略模式 (Strategy Pattern)
策略模式推荐一种方法,其中封装特定的算法系列,允许负责实例化特定算法的 Client 端类。实现该模式的类不知道实际的实现。
下面是一个演示策略模式使用的代码。我们有一个接口,它的 case() 方法由两个不同的类以不同的方式实现。testdata 类的对象通过其自己的 process() 方法间接调用相应的 case() 方法。
它将产生以下输出 -
Hello
MVC 设计模式 (MVC Design Pattern)
MVC 代表 Model、View 和 Controller,是一种非常流行的软件架构模式。大多数 PHP 网络(如 Laravel、Symfony 等)都实现了 MVC 架构。
应用程序中每一层的角色分离如下 -
- Model - 指数据结构。在本例中,数据库。
- View − 指用户界面。HTML 和 CSS.
- Controller - 执行处理的“中间人”。接受来自视图的输入,并与模型一起使用。不言自明的是,PHP 脚本和库本身。
View 充当 GUI,Model 充当后端,Control 充当适配器。在这里,三个部分相互关联。它将传递数据并在彼此之间访问数据。
例子
在下面的示例中,让我们用纯 PHP、JavaScript 和 HTML 实现 MVC 设计模式 -
应用程序的表示层是 view.php,它呈现 HTML 表单。用户将数据提交到控制器脚本。控制器返回的结果在网页上呈现,并带有一点 JavaScript
view.php
控制器脚本需要 model.php,并使用数据库对象调用 select 方法从数据库中获取数据。结果存储在当前会话中,以便可以在视图页面上访问它。
controller.php
应用程序的模型层以 “model.php” 编码。它使用 PDO 扩展与名为 mydb 的 mysql 数据库建立连接。
model.php
后端 mydb 数据库必须具有具有 ID 和 NAME 字段的 users 表。
通过访问浏览器中的“http://localhost/view.php”来启动应用程序。输入与具有所需字母的名称相对应的搜索词。
