拥有设计模式标签的文章

【设计模式】AD-原型模式(Prototype)

前言原型模式是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。php中底层已实现`__clone()`魔术方法,不需要其他操作即可进行对象的克隆。 使用场景在原型实例化需要使用大量资源的情况下,new一个类的实例是很浪费的行为,而有的时候我们又需要多个实例对应用进行服务。此时可以直接使用`clone $obj`来进行原型复制,跳过复杂的实例化和配置行为。 实现方法可直接使用php魔术方法`__clone(
阅读全文

【设计模式】AC-工厂模式(Factory Pattern)

前言工厂模式可以通过一个工厂类生产出所需要的对象,这样的好处是1. 在你需要修改需要实例化的类的时候不需要修改外部实例化的代码1. 在需要通过判断来实例化类的时候不需要写大量的ifelse或者switch 应用场景1. 大部分同样功能实例化可能会切换的类的时候都可以用到,如:已编写一个自己的Log类,外部已经多处引用,此时迭代了一个更好的Log类但是不想改变外部代码,可直接在工厂类中生产新的Log类。1. 可能通过配置切换不同对象来进行后续操作,如:平台支
阅读全文

【设计模式】AB-单例模式(Singleton Pattern)

前言在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。了解php内存管理的人都知道,一个类文件(xxxx.class.php)在加载后会先进入代码区以字符串的形式保存起来,在实例化的时候才会在堆中生成对应的对象占用部分内存。在有些场景中,为了防止对象被重复实例化,会使用此模式来保证只能创建一个实例。如:在封装一个数据库连接交互的类库的时候,为了避免多次连接数据库,可能会使用到单例模式来保证一次脚本运行只创建一个连接,或者使用
阅读全文

【设计模式】AA-说明

简介此篇将记录本人学习设计模式的全过程。全部学习来自以下文章:将会使用涉及到的设计模式来重构一个简单的日志记录demo,本篇先放出最原始的日志demo。为了方便工厂,适配,桥接等多模型设计模式,此处有2个demo:FileLog和CliLog。FileLog:```php<?phpnamespace Demo\AADemo\Classes;class FileLog{ public function l
阅读全文