
程序开发并不是堆积木游戏
SOLID是一个统称,用于提醒我们面向对象程序设计中的5个关键原则。
S – Single Responsibility Principle,单一职责原则
一个类只负责相应一个类型的功能。换句话说,引起要修改一个类的原因,有且只有一个。这条原则也称为“高内聚性原则”。当这个类需要承担其他类型的职责时,需要分解这个类。

能做,不意味着应该做
单一职责原则是实现高内聚、低耦合的指导方针。 一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小。而且如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。下面是一个违反了SRP原则的一个例子:
class Person extends Model { public $name; public $birthDate; protected $preferences; public function getPreferences() {} public function save() {} }
这是一个很基本的实体模型,实体模型的职责应该跟它代表的模型的行为相关,数据持久化显然不应该属于这里。
class Person extends Model { public $name; public $birthDate; protected $preferences; public function getPreferences() {} } class DataStore { public function save(Model $model) {} }
这样改造后,Person模型只做一件事,保存行为被移到了另一个负责数据存储的类中。
能做,不意味着应该做