PHP 面向对象
为啥要面向对象?
我记得之前面向对象是 抽象、封装、继承、多态。后面 把 抽象剔除了。
1. 抽象: 个人觉得抽象是一种思维的方式,抽象就好像整合,把一些东西整合在一起,再给它取个名字,面向对象的最重要的一个步。
2. 封装: 作用域的问题,不干扰运行。就好像windows系统欺骗程序的4g的内存空间。 继承: 继承上一代的东西。
3. 多态: 一个事务的多种的状态,如水:热水、温水、凉水、河水、海水、脏水,都是水,水在不同的环境下呈现出了不同的状态。对于代码而言
一个abstract类+子类就可呈现出不同的状态,只需添加子类。
面向对象其实是来源于生活中。水 == 液体(铁水、银水),本是铁或银,怎么叫铁水银水呢?
铁融化掉成了液体,本质上还是铁,但是有了液体的特性,所以带水---铁水。
铁水 = 铁的本质 + 液体的特性。
其实生活中有很多很多案例。举个例子,就拿我们常见的树来说。
农夫买了两株观赏性的小树苗,栽倒门前。然后又买了100株茶树,种植到山上,期望过几年有茶籽捡。
分析—>观赏性的小树苗、茶树苗。
从名称即可得出 观赏性、树、茶、苗(幼小);
观赏性 -- 是一种特性
树 -- 植物种类的一种 类别
茶 -- 子类
苗 -- 表现形式
根是树,其它的都是继承与于树
抽象
Abatract 抽象类、interface 接口类
封装
代码实现
继承
1. Extends 继承类
2. implements 实现接口
3. Trait 代码复用
4. final 总有东西是私密的
多态
一个调用,可以根据事务的不同而不同。
五大基本原则:SPR, OCP, LSP, DIP, ISP
单一职责原则SRP(Single Responsibility Principle)
是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。
开放封闭原则OCP(Open-Close Principle)
一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来`。
里式替换原则LSP(the Liskov Substitution Principle LSP)
子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。
依赖倒置原则DIP(the Dependency Inversion Principle DIP)
具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类: 而应当由B定义一个抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。
接口分离原则ISP(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来
8336

被折叠的 条评论
为什么被折叠?



