php设计模式(十九)命令模式

命令模式就和名字一样;比较适合执行命令的场景;命令发送者只管调用具体命令类中的 execute() 方法;然后在具体命令类中设定命令接收者;可以消除命令发送者和命令接受者之间的耦合;并且可以方便的扩展新命令; 结构CommandInterface:命令抽象类;一般会暴露一个 execute 方法;Command:具体的命令类;设定接收者;Invoker:命令...
阅读全文

解决打开excel报文件格式或文件扩展名无效的问题

今天有事没空写文章了;发个之前在使用 excel 的时候遇到的一个问题的解决办法;通过右键新建的 Microsoft Excel 工作表;打开后提示如下;Excel无法打开文件,因为文件格式或文件扩展名无效,。请确定文件未损坏,并且文件扩展名与文件格式匹配原因是之前同时安装了 office 和 wps ;后来把 wps 卸载了;伴随还可能出现的问题是 excel 文...
阅读全文

Mac从入门到痴迷系列之安装配置iterm2和oh my zsh

盼望着盼望着;IMac 来了;程序猿的幸(jia)福(ban)生活近了;是时候开个系列教程写一写 mac 使用和奇技淫巧了;有了此教程如果你还缺一台 32G的27寸的5k显示器IMac的话;正好我司缺少一个使用IMac的骚年;公司路由器级科学上网;正版office、phpstorm 等软件;朝9晚6双休无加班;技术氛围浓厚;没有根据手机壳改变主题颜色这种奇葩...
阅读全文

php设计模式(十八)模板方法模式

组合型的设计模式本质是使用组合替代继承;但是继承并非一无是处;只是因为大家容易滥用继承造成强耦合;作为面向对象编程的三大特性之一;继承还是很有价值的;比如说本篇文章要讲的模板方法模式;就是依赖于继承来实现; 结构抽象类: 定义操作中骨架;比如说执行顺序等;讲具体的执行内容延迟到子类;子类: 定义具体的执行内容; 示例Phone.php```p...
阅读全文

php设计模式(十七)代理模式

代理模式我们可能不熟悉;但是代理我们大多数程序猿都应该用过;比如说为了翻过一堵墙用谷歌查找资料;或者现实中购买商品我们也不是直接去工厂;而是通过一层层的代理商; 结构Subject:主题接口;定义真实主题和代理的公共方法;RealSubject:实现主题接口的真实主题;隐藏在代理之后;Proxy:实现主题接口并在内部引用了真实的主题; 示例Subje...
阅读全文

php设计模式(十六)享元模式

享元模式的目的是为了减少实例化大量的类时对内存的占用;减少是不可能平白无故就减少了的;主要是通过复用重复的类来实现;用现在比较热的词叫共享;就比如说现实生活中;我们有 99 件尺寸为 L 和 1 件 XXL 的不同款式的男装需要请多少个模特?回答 100 的同学肯定是家里有矿了;省钱的方案是只请2个模特就够了;其中 99 件 L 的需要一个 170cm 的模特;...
阅读全文

php设计模式(十五)外观模式

外观模式又叫门面模式;现在都是模块化开发了;开发中很多时候都是在使用各种扩展包;或者在外观模式中我们叫做子系统;外观模式的作用就是减少子系统之间的耦合;降低子系统的使用难度;我们举个栗子;实现一个加密文件内容的功能;这个功能分为两部分;1. 用于从文本文件中读取内容的 File 类2. 用于加密内容的 Encrypt 类如果我们每次都直接调用这两个类...
阅读全文

php设计模式(十四)安全组合模式

上篇文章我们讲了透明组合模式;但是也说了透明组合模式中的叶子节点虽然有 add 方法;运行的时候却是抛出错误;这还有个安全的组合模式避免这种情况; 结构Component:只包含树枝节点和叶子节点公共的方法抽象类Composite:树枝节点 有子节点 示例中指 Dir 文件夹Leaf:叶子节点 没有子节点 示例中指 File 文件 示例只包含树枝节点和...
阅读全文

php设计模式(十三)透明组合模式

组合模式用来解决整体和部分可以一致对待的问题;比如说 `文件夹` 和其下的 `文件`;可以复制文件也可以复制整个文件夹;组合模式是将对象组合成树形结构以表示整体和部分的层次结构;可以方便的增加节点;组合模式分为两种;1. 透明模式2. 安全模式 我们先来说透明组合模式; 结构Component:包含树枝节点和叶子节点方法的抽象类Composite:...
阅读全文

解决浏览器自动跳转到广告网站的神器

眼瞅着马上凌晨了;看来今天这篇设计模式文章是写不完了;那就推荐个软件吧;有段时间浏览器访问网站的时候;莫名其妙总会自动跳转到 smartpixel.xyz ;或者其他的一个网站;然后再经过几次重定向;最终会跳到各种不同的广告页面;下载各种杀毒软件或者优化工具都没有毛用;让我不胜其扰;最终找到了一款软件叫 AdwCleaner ;连安装都不需要下载后双...
阅读全文