面向对象程序设计
对象就是数据,对象本身不包含方法。但是对象有一个“指针”指向一个类,这个类里可以有方法;
面向对象:类的复用,继承+多态;
继承 vs 组合,在二者均可使用的情况下更倾向于使用 组合,因为一般可以降低耦合。继承是紧耦合的,继承扩展复杂,
继承树的抽象层应该比较稳定,一般不要多于三层,子类扩展而不是覆盖或使的父类的功能失效;
多态指同一类对象在运行时的具体化,本质就是if...else,只不过实现的层级不同;
接口是一组规范和契约,语义上应该保持一致,接口不提供实现只提供了一组规范;
php中的接口失去了接口应有的语义,使用场景不多,推荐使用抽象类;
foreach 语法会检查这个实例有没有实现iterator接口,如果实现了则通过内置方法或该类中的方法模拟foreache语句,
所以实现了iterator接口的类可以用foreach语法,形式上比较统一;
反射:通过类对象获取类信息的功能称为反射,常用于调试和获取类信息;
异常偏重于保护业务数据一致性并且强调对异常业务的处理;
面向对象设计的五大原则
单一职责原则(single responsibility principle,srp): 避免相同的职责分散到不同的类中,避免一个类承担太多职责,可达到减少耦合提高复用性的效果;
简单来说就是怎样设计类以及类的方法界定的问题;
工厂模式:负责根据传递的参数不同“生产”对象。 设计模式源于建筑学;
mvc的相互分享其实就是srp在系统总体设计中的应用,srp是最简单的原则之一,也是最难做好的原则之一;