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