设计模式 Design Pattern ,让我们发现编程之美。

所谓PHP常用的设计模式,在了解完这些设计模式之后会发现,啊,原来这个就是xxx模式啊!其实平常接触的框架代码里都能看它们的影子,但是只是知道设计模式还不够,需要在写代码的时候就能想到,并熟练实现和使用。这也是一种进阶。

设计模式也是一种设计思想,并不限于语言,也有人说设计模式阻碍了程序思想的创新和发展,很明显我想我目前还没有这等认知能力 : )

工厂模式

Factory 工厂模式是最常用的实例化对象的模式,顾名思义,提供模板,它能像工厂一样实例化对象;用工厂方法或者类替换new关键字生成对象,这样做可以提高程序的扩展性,使程序易修改。

单例模式

Singleton 单例模式同样也是一种实例化的模式,在很多时候我们不希望对象存在多个,为了保持对象的单一和统一,使用单例模式易于外界访问,也节约系统资源。

注册器模式

Registry 注册器模式通过单一的全局的对象来获取对其它对象的引用,实现全局共享和交换对象。其实说白了就是把对象的实例放到全局引用里,避免对象多次实例化,并且其他地方都可以去引用这些对象。

适配器模式

Adapter 将截然不同的方法接口封装成统一的API,适配器在框架中很常见,有数据库操作类(mysql,sqlserver),cache缓存操作类(memcache,redis)等等。

策略模式

Pattern:Strategy (对象行为型)将一种特定的行为和算法封装成类,以适应特定的上下文环境。常规的if…else… 为硬编码模式hard code

数据对象映射模式

Object Relational Mapping 是将对象和数据存储映射起来,对一个对对象的操作会映射为对数据存储的操作。

在很多框架里也可以看到这样的模式,比如常见的框架的 ORM (Object Relational Mapping,简称ORM) 功能,结合数据对象映射模式、工厂模式、注册器模式将复杂的SQL语句映射成对象属性的操作。使用工厂模式实例化数据库对象,使用注册器模式将数据对象共享,然后在模型类构造方法里读取数据库存入属性,在析构方法里存储到数据库中。

观察者模式

Observer 又名发布-订阅 (Publish/Subscribe) 模式。当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新。观察者模式实现了低耦合,非侵入式的通知与更新机制。在PHP标准库 (SPL) 中已经提供SplSubjectSqlOberver接口。

参考

Swoole(php并行扩展)开发者韩天峰视频:http://www.imooc.com/video/4908