随笔分类 - php
摘要:1. php如何校验IP地址 filter_var() 函数 通过指定的过滤器过滤一个变量。如果成功,则返回被过滤的数据。如果失败,则返回false。 FILTER_VALIDATE_IP过滤器 过滤器把值作为ip地址来验证。 $ip = "192.168.0.1"; if (!filter_var
阅读全文
摘要:十大排序算法:参考链接 1. 冒泡排序 重复地走访过要排序的数列,一次比较两个元素。如果第一个比第二个大,顺序调换。 这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。 $arr = [2, 10, 7, 20, 44, 38, 100, 1, 20]; $count = coun
阅读全文
摘要:1. 抽象类 不能被实例化 在类中 只要有一个方法被定义为抽象的,那么这个 类就必须加上abstract关键字 成为抽象类 抽象方法只声明其调用方式,不能定义具体功能实现 子类必须定义父类中的所有抽象方法,方法的访问控制符必须和父类一致或者更为宽松 子类实现的抽象方法可以增加参数但必须有默认值。 a
阅读全文
摘要:1. 单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点 2. 实列 class Singleton { private static $uniqueInstance; // 静态实例 private $singletonData = '单例类内部数据'; private functio
阅读全文
摘要:1. 模板模式 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类 2. 实列 class Member { private $state; private $score; public function SetState($state) { $this->state = $st
阅读全文
摘要:1. 访问者模式 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作 2. 实列 interface ServiceVisitor { public function SendMsg(SendMessage $s); function PushM
阅读全文
摘要:1. 模板模式 属于行为型模式 在抽象父类中定义一个模板方法的方法,通过子类的覆盖使得相同算法框架可以有不同的执行结果 2. 实列 abstract class AbstractClass { public function TemplateMethod() { $this->PrimitiveOp
阅读全文
摘要:1. 门面模式 门面属于结构型模式 提供一个统一的接口可以访问多个子系统的多个不同的接口,对现有系统类方法的委托调用 2. 案例 当炒股票时,新股民不了解股票,是很容易亏钱,需要学习股票知识。 这样新手最好把炒股委托给基金公司,基金公司了解证券知识,那么股民把自己的股票托管给基金公司去运营,这样股民
阅读全文
摘要:1. 桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立地变化态 这个模式和适配器非常相似。适配器的目的是为了帮助两个不太相关的类,让它们能够协同工作,实现中间转换工作。 桥接是为了让方法的行为解除继承耦合,方便地添加、修改,动态调用行为,让抽象接口和实现部分可以独立进行改变 解决继承的不断增
阅读全文
摘要:1. 备忘录模式 在不破坏封装性的前提下,捕获一个对象的内部状态 在该对象之外保存这个状态,就可将该对象恢复到原先保存的状态 2. 实列 class Originator { private $state; public function SetMeneto(Memento $m) { $this-
阅读全文
摘要:1. 建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 2. 实列 class Product { // (商品)产品类 private $parts = []; public function Add(String $part): void { $this->p
阅读全文
摘要:1. 中介者模式 用一个中介者对象来封装一系列的对象交互 ,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互 2. 实列 abstract class Mediator { abstract public function Send($message, $user);
阅读全文
摘要:1. 中介者模式 用一个中介者对象来封装一系列的对象交互 使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互 2. 实列 abstract class Mediator { abstract public function Send($message, $user); }
阅读全文
摘要:1. 享元模式 享元模式使用共享物件,减少运行时对象实例的个数,节省内存 将许多“虚拟”对象的状态集中管理, 一旦被实现,单个的逻辑实现将无法拥有独立而不同的行为 当一个类有许多的实例,而这些实例能被同一方法控制,就可以使用享元模式 2. 实列 interface Flyweight { publi
阅读全文
摘要:1. 代理模式 为其它对象提供一种代理以控制对这个对象的访问 2. 实列 interface SendMessage { public function Send(); } class RealSendMessage implements SendMessage { public function
阅读全文
摘要:1. 责任链模式 责任链模式,属于对象行为型的设计模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系 将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止 2. 实列 abstract class FilterChain { protected $next
阅读全文
摘要:1. 策略模式 策略模式,又称为政策模式,属于 行为型的设计模式 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化 工厂模式属于创建型模式,用来创建对象,返回new出来的对象。调用对象的方法是由客户端来决定 策略模式通过执行上下文,将要调用的函
阅读全文
摘要:1. 命令模式 命令模式,也称为动作或者事务模式 如用餐厅举列,菜单是这个实际的命令,服务员是这个命令的发送者,而厨师是这个命令的接收者。 那么,这个模式解决了什么呢?当你要修改菜单的时候,只需要和服务员说就好了,她会转达给厨师,也就是说,我们实现了顾客和厨师的解耦。也就是 调用者与实现者的解耦。
阅读全文
摘要:1. 原型模式 原型模式又称克隆模式 对对象进行克隆,但是又把被克隆的对象称之为最初的原型,或者实例化过后的对象 2. 实列 interface ServiceProvicer { public function getSystem(); } class ChinaMobile implements
阅读全文
摘要:1. 迭代器模式 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示 2. 实列 interface MsgIterator { public function First(); // 返回第一个元素 public function Next(); // 返回下一个元素 pu
阅读全文

浙公网安备 33010602011771号