![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
主要是以PHP为语言实现的设计模式学习
小资不采
我是一个小熊啊
展开
-
php设计模式之代理模式详解
代理模式代理模式是一种结构型设计模式, 让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。代理模式建议新建一个与原服务对象接口相同的代理类, 然后更新应用以将代理对象传递给所有原始对象客户端。 代理类接收到客户端请求后会创建实际的服务对象, 并将所有工作委派给它。比如客户访问一个站点,它首先访问的时代理服务器,代理服务器经过一层过滤之后,最后请求才到达真正的服务器代理服务可以延迟服务,等真正调用的时候,才会去示例对象代理可以实现访转载 2022-03-20 21:52:28 · 710 阅读 · 1 评论 -
php设计模式之原型模式详解
原型模式原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。所有的原型类都必须有一个通用的接口, 使得即使在对象所属的具体类未知的情况下也能复制对象。 原型对象可以生成自身的完整副本, 因为相同类的对象可以相互访问对方的私有成员变量。原型模式提供了一种复制已有对象的简便方式, 可代替直接复制对象的所有成员变量来对对象进行重构的方法原型模式让你能够在被克隆类的内部进行克隆工作, 因此可以不受限制地访问类的私有成员变量。创建原型接口, 并在其中声明 克隆方法。转载 2022-03-20 19:56:21 · 337 阅读 · 0 评论 -
php设计模式之生成器模式详解
生成器模式生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。该模式会将对象构造过程划分为一组步骤,但是不是所有步骤都需要调用最常用的一些例子就是sql查询的查询构造器当有不同的查询的时候,只需要调用不同的步骤即可再比如,sql查询中,mysql的limit,offset 写法和 postgreSql不一样,别的都一样,这个时候就只需要改写一个方法即可代码示例数据查询接口interface QueryBuilde转载 2022-03-20 19:14:07 · 431 阅读 · 0 评论 -
php设计模式之抽象工厂模式详解
抽象工厂模式抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。实现以不同的产品类型和产品变体来抽象为所有的产品类型申明接口具体的产品类来实现接口申明抽象工厂接口,并且在接口中为所有抽象产品提供一组构建方法。为每种产品变体实现一个具体的工厂类在应用程序中开发初始化代码。 该代码根据应用程序配置或当前环境, 对特定具体工厂类进行初始化。 然后将该工厂对象传递给所有需要创建产品的类举例声明一个数据连接,数据查询的接口不同的数据库有不同的连接方式在转载 2022-03-20 15:19:40 · 443 阅读 · 0 评论 -
工厂方法模式
工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。在编写代码时,无法预知对象具体的依赖时,可以使用工厂方法工厂方法将具体的使用和创建分离开工厂方法可以更加容易扩展,当要扩展这一组件的时候,可以根据协议更加容易的扩展,不需要去修改原来的代码,造成混乱具体的实现创造一个统一的接口,所有的产品都去实现这个接口在创建类中添加一个空的工厂方法,返回类型必须是遵循是上层的接口在创建者代码中找到对于产品构造函数的所有引用。为工厂方法中的每种产.转载 2022-03-20 13:55:50 · 72 阅读 · 0 评论 -
PHP设计模式之模板方法模式
PHP设计模式之模板方法模式 Template Method首先我们不说什么是模板方法模式,可以先看一个生活种的小例子,然后由生活中的小例子再来谈谈这个模板方法模式的实现。生活中大家早上上班,如果不是自己做饭的,一般都是在外面买这吃的,一般买包子搭配豆浆,这个是最快捷而且省钱的一种搭配方式,那么包子老板做包子一般分为几个步骤呢,一般都是先挑选紧致的面粉,然后会让面粉发酵,准备包包子的原材料,比如肉包子,韭菜包子,粉丝包子,海带包子,只要你能想的到,老板都会满足你,包好包子之后,会把包子放在蒸笼原创 2020-08-09 22:22:10 · 124 阅读 · 0 评论 -
PHP设计模式之外观模式
外观模式外观类 为调用端提供统一的调用接口,外观类知到那些子系统负责处理请求,从而将调用端的请求代理给适当的子系统外观模式对外屏蔽了子系统的细节,因此外观模式降低了客户端对子系统的使用的复杂性外观模式对客户端与子系统的耦合关系,让子系统内部的模块更容易维护和扩展通过合理的使用外观模式,可以更好的划分访问的层次生活举例,比如有一个影院系统,影院里有DVD,投影仪,爆米花机,幕布,音响,灯光,总共有这么多设备,我们去电影院开电影呢,用户是不关心影院怎么工作的,用户只关心的电影开原创 2020-08-07 00:28:38 · 151 阅读 · 0 评论 -
PHP设计模式之桥接模式
PHP设计模式之桥接模式 Bridge桥接模式属于结构型的设计模式将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变bridge 模式是基于最小设计原则,通过封装,聚合及继承等行为让不同的类承担不同的职责,主要的特点就是将抽象与实现分离,从而保证各部分的独立性以及应对他们功能的扩展生活场景引入:现在的生活都离不开手机,手机中又有不同的品牌,小米,华为,三星,苹果。每一种手机的设计又不一样,比如最开始的翻盖手机,直板手机,到现在的全面屏手机,假如现在的每个手机厂商都原创 2020-07-04 21:07:49 · 205 阅读 · 0 评论 -
PHP设计模式之适配器模式
PHP设计模式之适配器模式生活场景问题引入:假如需要去国外旅游,游玩,现在电子产品很丰富,但是每个电子产品都是需要电源来做驱动,手机,电脑,相机。。。但是又有一个很显示的问题,电子产品是很消耗电量的,电量没有了,就需要充电,在我们国家,我们买的电子产品出场带的电源充电器,一般都是220V的电压,但是世界很大,每个国家的要求(规定)又是不同的,比如美国就是120V原理:将一个类的接口转换为另外一种接口,让原本接口不兼容的类可以兼容。用户调用适配器转化出来的目标接口方法,适配器再去调用被适原创 2020-06-29 23:45:01 · 138 阅读 · 0 评论 -
PHP设计模式之组合模式
PHP设计模式之组合模式 Composite组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。使用过 laravel-admin 这个快速后台的同学,应该都使用过它的表单类 Form 创建表单的时候,只需要 new Form,然后添加对应的输出的表单元素就可以了,很快捷,很方便,其实它就是使用了 组合模式根据以上原创 2020-06-22 23:45:08 · 160 阅读 · 0 评论 -
设计模式的相关介绍
设计模式的相关介绍 design-pattern-php学习PHP设计模式的相关记录什么是设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性为什么要使用设计模式,以上说的很明白,就是为了让代码可以复用,解除代码之间的高耦合低内聚,减少无用的代码。让一个项目增加可维护性,更加容易扩展,同时也是使程序更加的健壮,更加的可靠,更原创 2020-06-21 16:13:26 · 121 阅读 · 0 评论 -
PHP设计模式之责任链模式
责任链模式 Chain Of Responsibilities顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。责任链模式也是属于行为型模式责任链模式是有一个请求类,一个请求处理者抽象类,然后有多个请原创 2020-06-17 00:06:37 · 223 阅读 · 0 评论 -
php设计模式之策略模式
策略模式 Strategy策略模式在分类上属于行为型现在有一个例子,比如有一只鸭子,有的鸭子是会飞的(野鸭),有的鸭子不会飞(家里养的鸭子),有的鸭子是会瓜瓜叫的,有的鸭子就不会叫(玩具鸭,周黑鸭),有的鸭子会游泳(养的鸭子,野鸭),有的鸭子不会(周黑鸭,玩具鸭,小黄鸭)假如利用继承来实现,那就是先创建一个抽象类,然后野鸭,周黑鸭,家里养的鸭子,小黄鸭,玩具鸭,都要去继承我们的抽象类鸭子,<?phpnamespace Strategy;abstract class原创 2020-06-16 00:30:14 · 193 阅读 · 0 评论 -
PHP设计模式之单例模式
PHP设计模式之单例模式单例模式在设计模式中是属于创建型的类型单例模式可以使一个程序处理请求过程中,只创建一次,减少类的频繁实例化单例模式不可以在外部实例化,也就是构造方法要设置为私有的方法单例模式只需要向外部提供一个公开的静态方法接口,给外部调用者使用单例模式要提供一个私有的克隆方法,防止外部克隆产生一个新的副本单例模式需要提供一个私有的防止类序列化的方法,以免产生一个新的副本单例模式可以分类饿汉式和饱汉式等等,在这里我们就提供一个饿汉式的单例模式单例模式一原创 2020-06-14 19:35:23 · 109 阅读 · 0 评论 -
PHP设计模式之观察者模式
PHP之观察者模式观察者模式在PHP里面是有已经定义好的两个接口文件,我们只需要继承它并实现它,那么我们的观察者模式就已经算是实现了。首先观察者模式,顾名思义,就是需要有一个观察者和被观察者,被观察的对象发生了变化,可以及时通知所有观察这个对象变化的对象在PHP种预定义的观察者: \SplObserver观察者定义了一个接口:interface SplObserver{ public function update(SplSubject $subject);}在PH原创 2020-06-13 23:37:36 · 131 阅读 · 0 评论 -
PHP设计模式之流接口模式
流接口模式 Fluent Interface属于结构型的设计模式定义: 用来编写易于阅读的代码,就像自然语言一样。鄙人之见,流接口模式就是可以瀑布式(链式调用)接口来转发一系列对象方法调用的上下文,这个上下文通常指3.1 通过被调方法的返回值定义3.2 自引用,新的上下文等于老的上下文3.3 返回一个空的上下文来终止最常见的就是各种php框架里封装的查询sql的语句,通过流式接口模式,把sql语句封装,然后供客户端方便明了的调用举例:namespace Flue原创 2020-06-24 00:58:22 · 306 阅读 · 0 评论