摘要: 1. 访问者模式 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作 2. 实列 interface ServiceVisitor { public function SendMsg(SendMessage $s); function PushM 阅读全文
posted @ 2020-12-31 20:01 linsonga 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 1. 模板模式 属于行为型模式 在抽象父类中定义一个模板方法的方法,通过子类的覆盖使得相同算法框架可以有不同的执行结果 2. 实列 abstract class AbstractClass { public function TemplateMethod() { $this->PrimitiveOp 阅读全文
posted @ 2020-12-31 19:59 linsonga 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 1. 门面模式 门面属于结构型模式 提供一个统一的接口可以访问多个子系统的多个不同的接口,对现有系统类方法的委托调用 2. 案例 当炒股票时,新股民不了解股票,是很容易亏钱,需要学习股票知识。 这样新手最好把炒股委托给基金公司,基金公司了解证券知识,那么股民把自己的股票托管给基金公司去运营,这样股民 阅读全文
posted @ 2020-12-31 19:58 linsonga 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 1. 桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立地变化态 这个模式和适配器非常相似。适配器的目的是为了帮助两个不太相关的类,让它们能够协同工作,实现中间转换工作。 桥接是为了让方法的行为解除继承耦合,方便地添加、修改,动态调用行为,让抽象接口和实现部分可以独立进行改变 解决继承的不断增 阅读全文
posted @ 2020-12-31 19:56 linsonga 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 1. 备忘录模式 在不破坏封装性的前提下,捕获一个对象的内部状态 在该对象之外保存这个状态,就可将该对象恢复到原先保存的状态 2. 实列 class Originator { private $state; public function SetMeneto(Memento $m) { $this- 阅读全文
posted @ 2020-12-31 15:36 linsonga 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 1. 建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 2. 实列 class Product { // (商品)产品类 private $parts = []; public function Add(String $part): void { $this->p 阅读全文
posted @ 2020-12-31 13:50 linsonga 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 1. 中介者模式 用一个中介者对象来封装一系列的对象交互 ,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互 2. 实列 abstract class Mediator { abstract public function Send($message, $user); 阅读全文
posted @ 2020-12-31 13:00 linsonga 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 1. 中介者模式 用一个中介者对象来封装一系列的对象交互 使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互 2. 实列 abstract class Mediator { abstract public function Send($message, $user); } 阅读全文
posted @ 2020-12-30 21:44 linsonga 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 1. 享元模式 享元模式使用共享物件,减少运行时对象实例的个数,节省内存 将许多“虚拟”对象的状态集中管理, 一旦被实现,单个的逻辑实现将无法拥有独立而不同的行为 当一个类有许多的实例,而这些实例能被同一方法控制,就可以使用享元模式 2. 实列 interface Flyweight { publi 阅读全文
posted @ 2020-12-30 18:49 linsonga 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 1. 代理模式 为其它对象提供一种代理以控制对这个对象的访问 2. 实列 interface SendMessage { public function Send(); } class RealSendMessage implements SendMessage { public function 阅读全文
posted @ 2020-12-30 14:39 linsonga 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 1. 责任链模式 责任链模式,属于对象行为型的设计模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系 将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止 2. 实列 abstract class FilterChain { protected $next 阅读全文
posted @ 2020-12-30 13:27 linsonga 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 1. 策略模式 策略模式,又称为政策模式,属于 行为型的设计模式 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化 工厂模式属于创建型模式,用来创建对象,返回new出来的对象。调用对象的方法是由客户端来决定 策略模式通过执行上下文,将要调用的函 阅读全文
posted @ 2020-12-29 21:37 linsonga 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 1. 命令模式 命令模式,也称为动作或者事务模式 如用餐厅举列,菜单是这个实际的命令,服务员是这个命令的发送者,而厨师是这个命令的接收者。 那么,这个模式解决了什么呢?当你要修改菜单的时候,只需要和服务员说就好了,她会转达给厨师,也就是说,我们实现了顾客和厨师的解耦。也就是 调用者与实现者的解耦。 阅读全文
posted @ 2020-12-29 20:30 linsonga 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 1. 原型模式 原型模式又称克隆模式 对对象进行克隆,但是又把被克隆的对象称之为最初的原型,或者实例化过后的对象 2. 实列 interface ServiceProvicer { public function getSystem(); } class ChinaMobile implements 阅读全文
posted @ 2020-12-29 17:28 linsonga 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 1. 迭代器模式 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示 2. 实列 interface MsgIterator { public function First(); // 返回第一个元素 public function Next(); // 返回下一个元素 pu 阅读全文
posted @ 2020-12-29 16:16 linsonga 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 1. 观察者模式 定义对象一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者和被观察者都是抽象耦合的 建立一套触发机制 参考链接 2. 类图 3. 实列 interface Observer { // 定义观察者接口,里面有 update 方法 publ 阅读全文
posted @ 2020-12-29 12:15 linsonga 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 1. 适配器模式 将一个类的接口转换成希望的另外一个接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 2. 实列 class AliMessage { public function send() { echo "ali发送短信" . PHP_EOL; } publ 阅读全文
posted @ 2020-12-28 22:10 linsonga 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 1. 装饰器模式 动态地给一个对象添加新的功能,同时又不改变其结构,进行内容扩展 就增加功能来说,Decorator模式相比生成子类更为灵活 参考链接 2. 实列 根据新老用户发送不同的短信模板 interface Template { public function message(); } // 阅读全文
posted @ 2020-12-28 16:54 linsonga 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 1. 抽象工厂模式 还是将实现推迟到子类,但是抽象工厂里面不仅仅只返回一个对象,而是返回一堆 2. 实列 interface Message { public function send(string $msg); } class AliMessage implements Message { pu 阅读全文
posted @ 2020-12-28 14:27 linsonga 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 1. 工厂模式 与简单工厂的区别是,将实现推迟到子类 可以不用抽象类,直接用一个接口来定义工厂方法,摒弃掉getMessage()方法,外部直接调用公开的模板方法(factoryMethod)即可 2. 实列 interface Message { public function send(stri 阅读全文
posted @ 2020-12-28 13:43 linsonga 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 1. 简单工厂模式 简单工厂,也称静态工厂,不属于GoF23种设计模式。可以说是所有的设计模式中大家可能最容易理解的模式 传入指定数据,返回相应的内容 使用接口更加符合面向对象的规范 createMessage 不一定使用 static,看自己业务情况决定 增加发送渠道时,添加新类继承 Messag 阅读全文
posted @ 2020-12-28 12:00 linsonga 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 1. static 使用 准备一个类,有静态变量、静态方法、普通方法 class Test { static $v = 'a'; static function showV() { echo self::$v; } function showVV() { echo self::$v; } stati 阅读全文
posted @ 2020-12-28 11:07 linsonga 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 1. docker 好处 应用更快速的交互和部署 传统模式,安装一堆应用程序,redis,mysql,php docker,打包镜像发布测试,一键运行 快捷的升级和扩缩容 部署就像搭积木,项目整体打包成一个镜像,扩展A,B,C....服务器 更简单的运维系统 在容器化后,开发环境,测试环境和线上环境 阅读全文
posted @ 2020-12-22 15:20 linsonga 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 1. 同级元素设置不同样式,隐藏下级样式 <div class="span_class"> <span> A </span> <span> B </span> <span> C </span> </div> <style> // 设置下级 .span_class > span { color: #6 阅读全文
posted @ 2020-12-09 23:40 linsonga 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 1. requests 代理 IP proxies 配置 import requests proxies = { "http": "http://192.168.1.1:111", "https": "http://192.168.1.2:222", } requests.get("http://e 阅读全文
posted @ 2020-12-09 23:22 linsonga 阅读(316) 评论(1) 推荐(0) 编辑
摘要: nginx 是一个高性能的 http 和反向代理服务器。也是一个 IMAP/POP3/SMTP 代理服务器。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗 当接收到一个 http 请求时,通过配置文件找到对应的 server。然后匹配 server 中的所有 location,找到最匹配 阅读全文
posted @ 2020-12-01 20:38 linsonga 阅读(241) 评论(1) 推荐(0) 编辑
点击右上角即可分享
微信分享提示