设计模式
进阶必经路
明日晴空
加油啦~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式 -策略模式(九)
一、什么是策略模式 将一组特定的业务行为或算法封装成类,可以在运行时更改,以适应某些特定上下文环境,解决各种if else判断,这种模式就是策略模式; 注:如果策略超过4个,考虑用混合模式; 栗子:旅行出游,选择交通工具,每种交通工具都是一种策略 二、策略模式作用 算法可以自由切换,避免使用多重if…else 条件盘点,拓展性好; 三、具体实现 // 交通策略接口 interface TrafficStrategy { public function speed(); public function c原创 2021-05-18 09:13:37 · 214 阅读 · 0 评论 -
设计模式 -迭代器模式(八)
一、什么是迭代器模式 在不需要了解内部实现的前提下,遍历一个聚合对象内部元素 二、 迭代器作用 相比传统的编程模式,迭代器可以隐藏遍历元素的所需操作 三、具体实现 class AllUser implements \Iterator // 继承框架自带迭代器基类 { protected $index = 0; protected $data = []; protected $ids; public function __construct() {原创 2021-05-14 09:36:53 · 224 阅读 · 0 评论 -
设计模式 - 代理模式(六)
一、什么是代理模式 客户端对目标的操作,委派给代理对象(proxy)处理,代理对象相当于一个中介; 二、代理模式作用 隐藏目标对象,不对外暴露,解耦代码业务 三、具体实现 interface UserProxy { public function getUserName($id); public function setUserName($id, $name); } class Proxy implements UserProxy { public function getUserName($id)原创 2021-05-13 16:56:57 · 158 阅读 · 0 评论 -
设计模式 - 装饰器模式(五)
一、什么是装饰器模式 装饰器模式:创建装饰者对象,动态添加或修改类的方法,灵活拓展功能 二、装饰器作用 一个类,提供了个方法,如果要对这个方法,修改或添加的功能,传统的编程模式,需要一个子类继承它,并重新实现。 使用装饰器,可以直接在运行时添加一个装饰器对象即可,实现最大的灵活性。 三、实现案例 class MilkTea { protected $decorators = array(); // 装饰者数组 public function drink() { $this->before原创 2021-05-12 17:56:52 · 243 阅读 · 0 评论 -
设计模式 - 适配器模式 (四)
一、什么是适配器模式(Adapter Pattern)? 适配器模式,就是将不同的api接口,统一成一致的;实际应用举例,数据库操作有mysql、mysqli、pdo三种,但是它们的连接和操作方法是不一样的,我们可以用适配器将它们的操作接口封装成一致的。 类似场景还有cache适配器,将memcache、redis、file、apc等不同缓存函数适配一致; 适...原创 2019-07-23 17:18:59 · 383 阅读 · 0 评论 -
设计模式 -观察者模式(七)
一、什么是观察者模式 当一个对象状态发生改变时,依赖它的对象会全部收到通知,并自动更新 二、观察者模式作用 实现低耦合,非侵入式的通知与更新机制,能更好的维护代码 三、具体实现 // 基类 abstract class EventGenerator { private $observers = []; public function addObserver(Observer $observer) // 添加观察者 { $this->observers[] = $observer }原创 2021-05-13 17:35:10 · 166 阅读 · 0 评论 -
设计模式 -原型模式(三)
一、什么是原型模式 原型模式简单理解:先创建好一个原型对象,然后通过clone原型对象,来创建新的对象。 二、使用原型模式的好处 原型模式适用于大对象的创建,比如一个对象创建的时候需要初始化很多东西,产生大的开销,这时候用原型模式,就可以避免类创建时重复初始化的开销。 三、具体实现 1、比如有以下A对象: class A { public $color; public $height; public $width; // 开销比较大的初始化 public function init(s原创 2021-05-11 18:04:21 · 249 阅读 · 0 评论 -
设计模式 - 单例模式(二)
一、单例模式是什么?有什么作用? 单例模式就是让类 只实例化(new)一次,使用单例模式, 则可以避免大量的new 操作消耗的资源。 二、实现单例模式 1)三私一公(原理) ①、私有静态属性,又来储存生成的唯一对象 ②、私有构造函数 ③、私有克隆函数,防止克隆——clone ④、公共静态方法,用来访问静态属性储存的对象,如果...原创 2019-07-16 11:35:57 · 230 阅读 · 0 评论 -
设计模式 - 工厂模式(一)
从字面上理解,工厂模式,就是工厂中,用模具去生产某种产品,当我们改变这个模具,接下来生产的产品也就跟着改变了; 其实工厂模式,就是某种封装,我们来看个工厂模式的demo: 1. Test1.php // 新建Test1类文件 <?php class Test1 { public function add(){ return '我是Tes...原创 2019-07-15 17:19:58 · 193 阅读 · 0 评论 -
PHP设计模式(注册模式)
一、什么是注册模式? 注册模式也称注册树或注册器模式,将类对象注册到全局树(注册类)上,那么他就可以被任意地方访问。 二、为什么要用注册模式? 单例模式解决的是如何在整个项目中创建唯一对象实例的问题,工厂模式解决的是如何不通过new建立实例对象的方法。 那么注册树模式想解决什么问题呢? 在考虑这个问题前,我们还是有必要考虑下前两种模式目前面临的局限。 首先,...原创 2019-07-20 14:59:58 · 336 阅读 · 0 评论
分享