PHP设计模式
文章平均质量分 89
PHP为demo的设计模式
_wei丶
这个作者很懒,什么都没留下…
展开
-
SOLID原则介绍
SOLID原则介绍SOLID原则是由罗伯特·C·马丁在21世纪早期引入,指代了面向对象编程和面向对象设计的五个基本原则。遵循SOLID原则可以确保我们设计的代码是易维护、易扩展、易阅读的。SOLID原则同样也适用于Go程序设计。具体SOLID编码原则见下表:简写全称中文描述SRPThe Single Responsibility Principle单一功能原则OCPThe Open Closed Principle开闭原则LSPThe Liskov Subst转载 2021-08-11 20:13:53 · 1863 阅读 · 1 评论 -
PHP-设计模式-责任链
<?php/** * 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 * 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 * 意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它翻译 2020-11-06 15:36:27 · 113 阅读 · 0 评论 -
设计模式简介
设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大转载 2020-11-03 10:40:37 · 101 阅读 · 0 评论 -
PHP-设计模式-状态模式
<?php/** * 在状态模式(State Pattern)中,类的行为是基于它的状态改变的。 * 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 * * 区别: * - 策略的改变由client完成,client持有context的引用;而状态的改变是由context或状态自己, * 就是自身持有context * - 简单说就是策略是client持有context,而状态是本身持有context * 使用场景:大量和对象状态翻译 2020-11-03 10:33:52 · 121 阅读 · 0 评论 -
PHP-设计模式-外观模式
<?php/** * 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 * 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 * * 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 * 主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之翻译 2020-11-03 10:33:15 · 83 阅读 · 0 评论 -
PHP-设计模式-策略模式
<?php/** * 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。 * 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 * * 说说我对的策略模式和访问者模式的区分: * 乍一看,其实两者都挺像的,都是实体类依赖了外部实体的算法,但是: * 对于策略模式:首先你是有一堆算法,然后在不同的逻辑中去使用; * 对于访问者模式:实体的【结构是稳定的翻译 2020-11-03 10:32:46 · 117 阅读 · 0 评论 -
PHP-设计模式-桥接
<?php/** * 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 * 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 * * * 意图:将抽象部分与实现部分分离,使它们都可以独立的变化。 * 主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 * *//** * In翻译 2020-11-03 10:31:40 · 88 阅读 · 0 评论 -
PHP-拉链式哈希DEMO
<?phpclass HashTable{ private $buckets; private $size = 10; public function __construct() { $this->buckets = new SplFixedArray($this->size); } private function hashFunc($key) { $strLen = strlen($k原创 2020-11-03 10:30:14 · 109 阅读 · 0 评论 -
PHP-设计模式-抽象工厂
<?php/** * 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 * 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 * * 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 * 主要解决:主要解决接口选择的问题。 * *//* 为形翻译 2020-11-03 10:29:27 · 80 阅读 · 0 评论 -
PHP-设计模式-命令模式
<?php/** * 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。 * 调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 * * 意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。 * 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设翻译 2020-11-03 10:28:02 · 93 阅读 · 0 评论 -
PHP-设计模式-依赖注入控制反转
<?php//依赖注入和控制反转是同一件事情。//依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;//控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。class Bim{ public function doSomething() { echo __METHOD__, '|'; }}class Bar{ pri原创 2020-11-03 10:26:49 · 119 阅读 · 0 评论 -
PHP-设计模式-观察者
<?php/** * 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。 * * 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 * 主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 * *//** * 抽象观察者角色 */interface Observer{ public f翻译 2020-11-03 10:25:46 · 86 阅读 · 0 评论