前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈PHP中的设计模式

浅谈PHP中的设计模式

作者头像
沈唁
发布2018-05-24 16:23:30
6220
发布2018-05-24 16:23:30
举报
文章被收录于专栏:沈唁志沈唁志

个人感觉所谓 php 设计模式,就像 36 计一样,不是你天天读 36 计,就可以自诩自己的 36 计很牛逼,同样你不知道 36 计,你一样可以会用 36 计而已,何故面试官以 PHP 设计模式来取人?

总体来说设计模式分为三大类:

(1)创建型模式——共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

(2)结构型模式——共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

(3)行为型模式——共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式

下面,我来介绍几种设计模式:

(1)单例模式:保证一个类仅有一个实例,并提供一个访问他的全局访问点例如框架中的数据库连接

(2)简单工厂模式:它具有创建对象的某些方法,可以使用工厂类创建对象,而不直接使用 new。例如初始化数据库的时候会用到,比如 MySQL,MSSQL

(3)策略模式:针对一组算法,将每一个算法封装到具有共同接口的独立的类中,例如进入个人主页时,根据浏览者的不同,给予不同的显示与操作

(4)注册模式:提供了在程序中有条理的存放并管理一组全局对象 (object),例如 ZF 框架中的 Zend_Registry::set

(5)适配器模式:将不同接口适配成统一的 API 接口,例如数据操作有 mysql、mysqli、pdo 等,可利用适配器模式统一接口

(6)观察者模式:一个对象通过添加一个方法使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。例如实现实现消息推送

(7)装饰器模式:不修改原类代码和继承的情况下动态扩展类的功能,例如框架的每个 Controller 文件会提供 before 和 after 方法

(8)迭代器模式:提供一个方法顺序访问一个聚合对象中各个元素,在 PHP 中将继承 Iterator 类

(9)原型模式:实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建

如果只是使用了 PHP 的继承功能,你设计出来的软件并不是面向对象的设计,因为这并不能提高代码的重用性和灵活性。

面向对象的原则是“组合优于继承”,因为组合可以以多种方式动态的处理任务。

虽然对象的组合会导致代码的可读性下降,但会让系统更加灵活,复用性更高。

设计模式是很多前辈花费大量精力总结的经验,是经过检验的高效的一系列对象组合方式。

所以,在学面向对象设计的时候,特别是如 PHP、java、python 这些语言,设计模式是必须要懂的,不然设计的一堆东西和以前过程式编程差别不大。

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:浅谈PHP中的设计模式

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档