六大设计原则
定义
应该有且仅有一个原因引起类的变更。
白话点来说就是,自己干自己的活。
特点
- 单例类只有一个实例对象;
- 该单例对象必须由单例类自行创建;
- 单例类对外提供一个访问该单例的全局访问点。
示例
改造前
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)降低变更引起的风险。