PHPer必学的进阶教程PHP面向对象设

学习PHP的朋友们都知道,PHP在中小型企业的应用是非常广泛包括建站、小程序、CRM与OA等。那么作为基础中的基础,PHP面向对象你又掌握了多少呢?

今天这篇文章,就来给大家讲一讲关于面向对象的一些事,希望能对大家有所帮助。

什么是面向对象?

面向对象就是把生活中要解决的问题都用对象的方式进行存储–把所有的数据用属性、方法表现出来。

面向对象编程就是编程的时候数据结构(数据组织方式)都通过对象的结构进行存储,使用属性和方法组织起来。对象之间的互动是通过方法的调用完成互动。

对象的描述方式更加贴合真实世界,有利于对大型业务的理解,具有多人合作方便、减少代码的冗余、灵活性高、代码的可重用性发挥到极致、可扩展性等优势。

五大设计原则——SOLID

学习面向对象编程像“抽象”、“封装”、“多态”、“继承”等基础知识是重要的,但同时为了创建简洁、模块化的设计,了解这些设计原则也同等重要。

接下来,本文就为大家介绍面向对象设计的5个基本原则:

S–单一功能原则(SRP)

O–开闭原则(OCP)

L–里氏替换原则(LSP)

I–接口隔离原则(DIP)

D–依赖倒置原则(OCP)

单一职责原则

单一职责有两个含义:一个是避免相同的职责分散到不同的类中,别一个是避免一个类承担太多职责。

遵守SPR原则的优势:

●减少类之间的耦合:当需求变化时,只修改一个类,从而隔离了变化带来类对其他职责的影响

●提高类的复用性:按需引用,一个类负责一个职责,需求的变动只需要修改对应的类或增加某一职责

●降低类的复杂度:职责单一,功能分散开降低一个类多个职责类的复杂度

不遵守SRP会影响对类的复用性。当只需要用该类的某一个职责时,由于它和其他的职责耦合在一起,也就很难分离出。

代码示例:

开闭原则

对象和实体应该对扩展开放,但是对修改关闭。

简单的说就是,一个类应该不用修改其自身就能很容易扩展其功能。

比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

代码示例:

里氏替换原则

如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。

这句定义的意思是说:每个子类或者衍生类可以毫无问题地替代基类/父类。

这就好比:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

代码示例:

接口隔离原则

接口隔离原则是指:客户端不应该被强制去实现于它不需要的接口。

有一个清晰的例子来说明示范这条原则。当一个类需要一个大量的设置项,为了方便不会要求客户端去设置大量的选项,因为在通常他们不需要所有的设置项。使设置项可选有助于我们避免产生“胖接口”。

代码示例:

依赖倒置原则

这条原则说明两个基本的要点:

●高阶的模块不应该依赖低阶的模块,它们都应该依赖于抽象

●抽象不应该依赖于实现,实现应该依赖于抽象

这条起初看起来有点晦涩难懂,但是如果你使用过PHP框架(例如Symfony),你应该见过依赖注入(DI)对这个概念的实现。虽然它们不是完全相通的概念,依赖倒置原则使高阶模块与低阶模块的实现细节和创建分离。可以使用依赖注入(DI)这种方式来实现它。更多的好处是它使模块之间解耦。耦合会导致你难于重构,它是一种非常糟糕的的开发模式。

代码示例:

总结

面向对象设计需要遵守如上原则,不过实际的代码设计一定要简单、简单、简单。在实际编码中要根据情况进行取舍,一味遵守原则,而不注重实际情况的话,可能会让你的代码变的难以理解




转载请注明:http://www.aierlanlan.com/rzdk/2503.html