软件设计七大原则
1.单一职责
要划分清楚每个类的职责,让每个类各尽其责
2.接口隔离
实现接口时要实现最小的接口,如下
public interface BaseList<T>{
void add(T t);
}
public interface MoreMethodList<T> extends BaseList<T>{
void remove(T t);
void get(int index);
}
假如有一个类仅仅想拥有add的行为,虽然通过实现MoreMethodList也可以达到目的,但最好的实践是实现BaseList接口
3.迪米特法则
又叫
最少知道法则
一个类对自己所依赖类的信息知道的越少越好(被依赖的类应该尽量不向外暴露其内部逻辑,而应仅仅暴露一些公共方法),并且如果两个类不该直接通信就不要存在依赖关系(处理好依赖关系)
4.里氏替换原则
父类被子类替换时类的行为不会受影响(当然是理想状态下),也就是说子类应尽量不要重写父类中已经被实现的方法,如果实在需要重写就考虑使用:1. 组合 2. 改为继承父类的上层父类
5.开闭原则
对扩展开放,对修改关闭
6.组合复用原则
优先考虑用组合解决问题
7.依赖倒置
一个类应尽量依赖与接口和抽象实现,如下
public class StreamResolve{
private InputStream inputStream;
StreamResolve(InputStream inputStream) {
this.inputStream = inputStream;
}
public void print() throws IOException {
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
while (bufferedInputStream.available() != 0){
System.out.println(bufferedInputStream.read());
}
}
private void load(String filePath){
try {
inputStream = Files.newInputStream(Paths.get(filePath));
} catch (IOException e) {
System.out.println("读取文件失败");
}
}
}