架构及设计模式
架构及设计模式
bujidexinq
我是一头老黄牛2010.
展开
-
PHP设计模式之享元模式
PHP设计模式之享元模式享元模式,“享元”这两个字在中文里其实并没有什么特殊的意思,所以我们要把它拆分来看。“享”就是共享,“元”就是元素,这样一来似乎就很容易理解了,共享某些元素嘛。Gof类图及解释GoF定义:运用共享技术有效地支持大量细粒度的对象GoF类图代码实现interface Flyweight{ public function operation...转载 2020-03-19 11:21:27 · 357 阅读 · 0 评论 -
PHP设计模式之原型模式
原型模式其实更形象的来说应该叫克隆模式。它主要的行为是对对象进行克隆,但是又把被克隆的对象称之为最初的原型,于是,这个模式就这样被命名了。说真的,从使用方式来看真的感觉叫克隆模式更贴切一些。Gof类图及解释GoF定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象GoF类图代码实现abstract class Prototype{ public ...转载 2020-03-19 11:46:31 · 243 阅读 · 0 评论 -
PHP设计模式之状态模式
状态模式从字面上其实并不是很好理解。这里的状态是什么意思呢?保存状态?那不就是备忘录模式了。其实,这里的状态是类的状态,通过改变类的某个状态,让这个类感觉像是换了一个类一样。说起来有点拗口吧,先学习概念之后再看。Gof类图及解释GoF定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类GoF类图代码实现class Context{ pri...转载 2020-03-15 16:05:00 · 376 阅读 · 0 评论 -
PHP设计模式之工厂方法模式
PHP设计模式之工厂方法模式上回说到,简单工厂不属于GoF的二十三种设计模式,这回可就来真家伙了,大名顶顶的工厂方法模式前来报道!GoF类图解释工厂方法模式对比简单工厂来说,最核心的一点,其实就是将实现推迟到子类。怎么理解呢?我们可以将上回的简单工厂当做父类,然后有一堆子类去继承它。createProduct()这个方法在父类中也变成一个抽象方法。然后所有的子类去实现这个方法,不再需要...转载 2020-03-21 15:48:42 · 167 阅读 · 0 评论 -
设计模式之工厂模式之抽象工厂(php实现)
抽象工厂模式:先来认识下什么是产品族: 位于不同产品等级结构中,功能相关联的产品组成的家族。图中的BmwCar和BenzCar就是两个产品树(产品等级结构);而如图所示的BenzSportsCar和BmwSportsCar就是一个产品族。他们都可以放到跑车家族中,因此功能有所关联。同理BmwBussinessCar和BenzBusinessCar也是一个产品族。可以这么说,它和工厂方法模式...原创 2020-03-21 21:34:06 · 190 阅读 · 0 评论 -
PHP设计模式之装饰器模式
PHP设计模式之装饰器模式工厂模式告一段落,我们来研究其他一些模式。不知道各位大佬有没有尝试过女装?据说女装大佬程序员很多哟。其实,今天的装饰器模式就和化妆这件事很像。相信如果有程序媛MM在的话,马上就能和你讲清楚这个设计模式。Gof类图及解释装饰这两个字,我们暂且把他变成化妆。首先你得有一张脸,然后打底,然后上妆,可以早上来个淡妆上班,也可以下班的时候补成浓妆出去嗨。当然,码农们下班...转载 2020-03-19 12:06:06 · 322 阅读 · 0 评论 -
PHP设计模式之中介者模式
上回说道,我们在外打工的经常会和一类人有很深的接触,那就是房产中介。大学毕业后马上就能在喜欢的城市买到房子的X二代不在我们的考虑范围内哈。既然需要长期的租房,那么因为工作或者生活的变动,不可避免的一两年或者三五年就要和房产中介打一次交道。有的时候,我们租房并不一定会知道房主的信息,房主也不用知道我们的信息,全部都由中介来进行处理。在这里,中介就成为了我们沟通的桥梁,这种情况其实就像是房主出国了或者...转载 2020-03-19 11:57:22 · 211 阅读 · 0 评论 -
设计模式之享元模式(PHP实现)
/** * 减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式, * 它提供了减少对象数量从而改善应用所需的对象结构的方式。 * 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 * 在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。 * 优点:大...原创 2020-03-19 11:22:52 · 107 阅读 · 0 评论 -
设计模式之适配器模式(php实现)
* 适配器模式:将一个类的接口转换成客户希望的另外一个接口。 * 适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 * * 实例解析: * 我们有一个 MediaPlayer 接口和一个实现了 MediaPlayer 接口的实体类 AudioPlayer。 * 默认情况下,AudioPlayer 可以播放 mp3 格式的音频文件。 * 我们还有另一个接口 Adv...原创 2020-03-19 11:15:26 · 182 阅读 · 0 评论 -
PHP设计模式之适配器模式
这个模式一直以来都有一个很经典的例子,那就是插座!没错,当我们从国外买回来电器,或者旅游出差去国外的时候,经常会需要一个电源适配器,因为我国的电压标准是220伏,而其他国家则有110伏的标准。而这个电源适配器正是适配器模式的一种标志。当对象不太符合要求的时候,给他加一个适配器呗!!Gof类图及解释GoF定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不...转载 2020-03-19 11:04:59 · 971 阅读 · 0 评论 -
PHP设计模式之命令模式
PHP设计模式之命令模式命令模式,也称为动作或者事务模式,很多教材会用饭馆来举例。作为顾客的我们是命令的下达者,服务员是这个命令的接收者,菜单是这个实际的命令,而厨师是这个命令的执行者。那么,这个模式解决了什么呢?当你要修改菜的时候,只需要和服务员说就好了,她会转达给厨师,也就是说,我们实现了顾客和厨师的解耦。也就是调用者与实现者的解耦。当然,很多设计模式可以做到这一点,但是命令模式能够做到的...转载 2020-03-19 11:04:01 · 104 阅读 · 0 评论 -
PHP设计模式之命令模式
PHP设计模式之命令模式命令模式,也称为动作或者事务模式,很多教材会用饭馆来举例。作为顾客的我们是命令的下达者,服务员是这个命令的接收者,菜单是这个实际的命令,而厨师是这个命令的执行者。那么,这个模式解决了什么呢?当你要修改菜的时候,只需要和服务员说就好了,她会转达给厨师,也就是说,我们实现了顾客和厨师的解耦。也就是调用者与实现者的解耦。当然,很多设计模式可以做到这一点,但是命令模式能够做到的...转载 2020-03-19 11:03:52 · 101 阅读 · 0 评论 -
设计模式之迭代器模式(PHP实现)
/** * 迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。 * 这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。 */(1)Iterator.class.php(接口)<?phpnamespace Iterator;interface Iterator...原创 2020-03-18 23:17:31 · 122 阅读 · 0 评论 -
PHP设计模式之迭代器模式
PHP设计模式之迭代器模式一说到这个模式,就不得不提循环语句。在《大话设计模式》中,作者说道这个模式现在的学习意义更大于实际意义,这是为什么呢?当然就是被foreach这货给整得。任何语言都有这种类似的语法可以方便快捷的对数组、对象进行遍历,从而让迭代器模式从高高在上的23大设计模式中的明星慢慢成为了路人。特别是我们这门PHP语言,PHP的强大之处就在于对于数组的灵活操作,本身就是hashma...转载 2020-03-18 23:16:03 · 152 阅读 · 0 评论 -
设计模式之代理模式(php实现)
/** * 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 * 1、Windows 里面的快捷方式。 * 2、猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象出来,高翠兰本人和孙悟空都实现了这个接口, * 猪八戒访问高翠兰的时候看不出来这个是孙悟空,所以说孙悟空是高翠兰代理类。 * 3、买火车票不一定在火车站买,也可以去代售点。 * 4、一张支...原创 2020-03-18 23:10:51 · 119 阅读 · 0 评论 -
PHP设计模式之代理模式
PHP设计模式之代理模式代理人这个职业在中国有另外一个称呼,房产经济人、保险经济人,其实这个职业在国外都是叫做房产代理或者保险代理。顾名思义,就是由他们来帮我们处理这些对我们大部分人来说都比较生疏的专业领域的工作。代理模式也是一样的道理,同时,在这篇文章中还会简单的介绍正向代理和反向代理是怎么回事。Gof类图及解释GoF定义:为其它对象提供一种代理以控制对这个对象的访问GoF类图...转载 2020-03-18 23:09:03 · 160 阅读 · 0 评论 -
设计模式之建造者模式
/** * 建造者模式 * 将一个复杂对象的建造与调用者分离。调用者只需要给出指定对象的类型和内容,建造者模式负责按照顺寻创建复杂对象. * 以买汽车为例,工厂负责制造汽车,你可以购买你所需要的汽车品牌和型号 * 指挥者(Director):将复杂对象划分为各个详情对象的建造请求(厂长) * 建造请求(Builder):将复杂对象划分为各个详情对象的建造请求(轮子、座椅、发动机) ...原创 2020-03-16 10:42:25 · 95 阅读 · 0 评论 -
PHP设计模式之备忘录模式
备忘录,这个名字其实就已经很形象的解释了它的作用。典型的例子就是我们原来玩硬盘游戏时的存档功能。当你对即将面对的大BOSS有所顾虑时,一般都会先保存一次进度存档。如果挑战失败了,直接读取存档就可以恢复到挑战BOSS前的状态,然后你就开开心心的再去练一会级回来解决这个大BOSS就好了。不过,为了以防万一,在挑战BOSS之前存个档总是好的。另外一个例子就是我们码农们天天要用到的代码管理工具Git或者S...转载 2020-03-15 20:16:14 · 151 阅读 · 0 评论 -
PHP设计模式之访问者模式
访问者,就像我们去别人家访问,或者别人来我们家看望我们一样。我们每个人都像是一个实体,而来访的人都会一一的和我们打招呼。毕竟,我们中华民族是非常讲究礼数和好客的民族。访问者是GoF23个设计模式中最复杂的一个模式,也是各类设计模式教材都放在最后的一个模式。先不管难度如何,我们先看看它的定义和实现。Gof类图及解释GoF定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素...原创 2020-03-15 14:56:03 · 282 阅读 · 0 评论 -
设计模式之责任链模式
/** * 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。 * 这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 * 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求, * 那么它会把相同的请求传给下一个接收者,依此类推。 * 避免请求发送者与接收者...原创 2020-03-14 22:49:56 · 112 阅读 · 0 评论 -
设计模式LastDay-参考链接!!!!!!!!!!!!!!!!!!
设计模式参考https://www.zhihu.com/people/zyblog/posts设计模式https://www.cnblogs.com/zhouqi666/tag/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/设计模式之访问者模式设计模式之模板模式(PHP实现)设计模式之策略模式(php实现)设计模式之空对象模式(php实现)...转载 2020-03-14 22:42:24 · 80 阅读 · 0 评论 -
PHP设计模式之模板方法模式
模板方法模式,也是我们经常会在不经意间有会用到的模式之一。这个模式是对继承的最好诠释。当子类中有重复的动作时,将他们提取出来,放在父类中进行统一的处理,这就是模板方法模式的最简单通俗的解释。就像我们平时做项目,每次的项目流程实都差不多,都有调研、开发、测试、部署上线等流程。而具体到每个项目中,这些流程的实现又不会完全相同。这个流程,就像是模板方法,让我们每次都按照这个流程进行开发。Gof类图及...原创 2020-03-14 21:58:36 · 154 阅读 · 0 评论 -
PHP设计模式之策略模式1
策略模式,又称为政策模式,属于行为型的设计模式。Gof类图及解释GoF定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化 。GoF类图代码实现interface Strategy{ function AlgorithmInterface();}class ConcreteStrategyA impl...原创 2020-03-14 18:38:46 · 129 阅读 · 0 评论 -
PHP设计模式之责任链模式
PHP设计模式之责任链模式责任链模式,属于对象行为型的设计模式。Gof类图及解释GoF定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。GoF类图代码实现abstract class Handler{ protected $successor; pub...原创 2020-03-14 22:07:02 · 107 阅读 · 0 评论 -
设计模式之策略模式PHP实现
1、策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。2、例子类图概览:3、假设我们需要实现一款鸭子游戏,鸭子们在河里一遍游泳戏水,一遍呱呱叫。鸭子的种类很多,实际生活中的鸭子、模型鸭、火箭鸭等等,有些鸭子会飞会叫,有些鸭子既不会飞也不会叫。这时候如果我们光用类的继承来实现,就是导致部分不会飞的鸭子也拥有了会飞的方法,这种b...原创 2020-03-14 19:14:41 · 166 阅读 · 0 评论 -
依赖注入的三种方式
在前面的例子中,我们说了学渣要完成作业必须要依赖学霸。那么学霸应该怎么把自己的作业交给学渣呢?(依赖注入)进行依赖注入有三种方式:1、构造方法依赖注入public class StupidStudent { private SmartStudent smartStudent; public StupidStudent(SmartStudent smartSt...原创 2020-02-25 14:41:29 · 941 阅读 · 0 评论 -
设计模式-模板模式-策略模式
模板模式应用场景:在一个项目的规则引擎中,一个规则引擎有一系列规则过滤,这个过滤步骤基本上是确定的,只是某些步骤在不同的场景下需要相互替换,模板方法定义了方法调用顺序,需要用到一个钩子,让子类去实现这个方法。模板模式解决问题:解决了以后可拓展的问题,如果以后需要在新场景下新增规则方法,只需新增一个类,实现钩子方法即可,不需改动既有代码。...原创 2020-02-21 13:48:36 · 381 阅读 · 0 评论 -
后端架构师技术图谱
转自:GitHub/architect-awesome,转https://www.cnblogs.com/xdecode/p/9212881.html数据结构队列 《java队列——queue详细分析》 非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:Arra...转载 2020-02-19 14:22:45 · 1492 阅读 · 0 评论