![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
Mossil
这个作者很懒,什么都没留下…
展开
-
设计模式-观察者模式
1. 概念 当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。观察者模式实现了低耦合,非侵入式的通知与更新机制。 2. 应用场景 当一个事件发生后,要执行一系列的更新操作。在传统的编程方式中,就是在事件的代码之后直接加入处理的逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件的主体代码。 EventGenerator.php <?php abstract class EventGenerator { private $observ原创 2021-05-26 16:28:03 · 51 阅读 · 0 评论 -
设计模式-适配器模式
1. 概念 该设计模式的目的在于将各种截然不同的函数接口封装成统一的API。如在PHP中操作数据有mysql、mysqli、pdo三种,即使使用三种不同的数据库操作,我们可以使用适配器模式将其统一成一样的API,类似场景还有缓存适配器。 <?php interface IDatabase { public function conn($host, $user, $password, $dbname); public function query($sql); public function cl原创 2021-05-26 16:10:45 · 54 阅读 · 0 评论 -
设计模式-注册树模式
1. 概念 为了解决全局共享和交换对象,把已经创建好的对象挂载到某个全局可以使用的数组上面,在需要使用的时候直接从该数组中获取即可。将对象注册到全局的树上,任何地方直接访问。 <?php class Register { protected static $objects; /** * 将对象注册到全局的树上 **/ public function set($alias, $object) { self::$objects[$alias] = $object; } /**原创 2021-05-26 15:57:24 · 77 阅读 · 0 评论 -
设计模式-策略模式
1. 3个角色 抽象策略角色 具体策略角色 环境角色(对抽象策略角色的引用) 2. 实现步骤 定义抽象角色类(定义好各个实现的共同抽象方法) 定义具体策略类(具体实现父类的共同方法) 定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法) <?php /** * 抽象策略类 **/ abstract class baseAgent { abstract function printPage(); } /** * 用于客户端是IE时调用的类(环境角色) **/ class IEA原创 2021-05-26 15:46:47 · 68 阅读 · 0 评论 -
设计模式-工厂模式
1. 概念 工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。它的好处就是当你想要更改所实例化的类名时,只需更改该工厂方法内容即可,不需逐一寻找代码中具体实例化的地方(new处)修改了。为系统结构提供灵活的动态扩展机制,减少了耦合。 /** * 简单工厂模式(静态工厂方法模式) */ interface people { public function say(); } /** * Class man 继承people的男人类 */ class man implements p原创 2021-05-26 15:15:06 · 64 阅读 · 0 评论 -
设计模式-单例模式
1. 3个特点 只能有一个实例 必须自行创建这个实例 必须给其他对象提供这一实例 2. 3中类型 懒汉式单例 饿汉式单例 登记式单例 3. PHP单例模式 class Single { // 声明一个私有的实例变量 private $name; // 声明一个静态变量(保存在类中唯一的一个实例) public static $instance; // 声明私有构造方法为了防止外部代码使用new来创建对象 private function __construct() { } // 声原创 2021-05-26 15:01:44 · 83 阅读 · 0 评论