【六大设计原则】单一职责原则

294 阅读2分钟

六大设计原则

单一职责原则

里氏替换原则

依赖倒置原则

接口隔离原则

迪米特法则

开放封闭原则

定义

应该有且仅有一个原因引起类的变更。

白话点来说就是,自己干自己的活。

特点

  1. 单例类只有一个实例对象;
  2. 该单例对象必须由单例类自行创建;
  3. 单例类对外提供一个访问该单例的全局访问点。

示例

改造前

public interface RealEstate {

    /**
     * 生成楼盘
     */
    void generateEstate();

    /**
     * 生成楼栋
     */
    void generateBuilding();

    /**
     * 生成单元
     */
    void generateUnit();

    /**
     * 生成房间
     */
    void generateRoom();
}

以房地产为例,创建房地产的过程:创建楼盘->生成楼栋->生成单元->生成房间

单一职责原则要求一个接口或一个类只能有一个原因引起变化,也就是一个接口或者类只能有一个职责,它就负责一件事情,上面的接口分别负责了四件事,违背了单一原则。

如果发现有一个类拥有了多种职责,那么就要问一个问题:可以将这个类分成多个类吗?如果有必要,那就分开,不要让一个类太累。

改造后

楼盘

public interface Estate {

    /**
     * 生成楼盘
     */
    void generateEstate();

    /**
     * 删除楼盘
     */
    void deleteEstate();

    /**
     * 编辑楼盘
     */
    void editEstate();
}

楼栋

public interface Building {

    /**
     * 生成楼栋
     */
    void generateBuilding();

    /**
     * 删除楼栋
     */
    void deleteBuilding();

    /**
     * 编辑楼栋
     */
    void editBuilding();
}

单元

public interface Unit {

    /**
     * 生成单元
     */
    void generateUnit();

    /**
     * 删除单元
     */
    void deleteUnit();

    /**
     * 编辑单元
     */
    void editUnit();
}

房间

public interface Room {

    /**
     * 生成房间
     */
    void generateRoom();

    /**
     * 删除房间
     */
    void deleteRoom();

    /**
     * 编辑房间
     */
    void editRoom();
}

优点

1)降低类的复杂度,一个类只负责一项职责。

2)类的可读性提高,可维护性提高

3)降低变更引起的风险。