本文来自laravel-china
接口和抽象类的概念有点相似:
接口:一个类要实现一个接口,类中必须实现接口中定义的所有方法,接口中定义的所有方法都必须是公有。
抽象类:一个类继承抽象类,子类必须定义父类中的所有抽象方法,子类中的方法访问控制(public、protected 、private)必须和父类中一样(或者更为宽松),例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。(私有比受保护的更高级和更严格)
开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象.
依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
单一职责原则:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。
接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
迪米特法则 :一个对象应该对其他对象保持最少的了解。
单例模式
1 | <?php |
简单工厂模式
1 | <?php |
一对一抽象工厂模式
1 | <?php |
一对多抽象工厂模式
1 | <?php |
self static
1 | //实例代码1 |
ioc
1 | IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦 |
多例模式
1 | abstract class Multiton { |
简单工厂模式
1 | interface fruit{ |
工厂模式
1 | 工厂模式,工厂方法或者类生成对象,而不是在代码中直接 new。 \ |
注册模式
1 | 注册模式,解决全局共享和交换对象。已经创建好的对象,挂在到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。 |
适配器模式
1 | 将各种截然不同的函数接口封装成统一的 API。 |
策略模式
1 |
|
观察者模式
1 | 1:观察者模式 (Observer),当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。 \ |
原型模式
1 | 原型模式(对象克隆以避免创建对象时的消耗) \ |
三大经典模式
1 | class Single { |
接口隔离
1 | 客户端不应当被迫实现它不需要用到的接口 |
开放封闭
1 | 对扩展开放,是指代码应当很容易添加新功能。 |
组合模式
1 | /** |
PHP面向对象编程:面向对象概念、基本实践、高级实战、PHP面向对象特殊实践