Home » Code » 面向对象程序设计原则之——SOLID

面向对象程序设计原则之——SOLID

程序开发并不是堆积木游戏

程序开发并不是堆积木游戏

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模型只做一件事,保存行为被移到了另一个负责数据存储的类中。

One comment

  1. 能做,不意味着应该做

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Time limit is exhausted. Please reload CAPTCHA.