【7大设计原则】——单一职责&开闭原则&接口隔离原则

339 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

7大设计原则

  1. 单一职责原则
  2. 里氏替换原则优于继承原则
  3. 依赖倒置原则
  4. 开闭原则
  5. 迪米特法则
  6. 接口隔离原则
  7. 组合优于继承原则

1.单一职责

每个方法、类、框架只做一件事

Math.round()只负责四舍五入

Reader类,只负责读取文件

SpringMVC 只负责简化MVC

字符流查码表,字节流不查码表

汉字的字节是1开头,GBK中文编码规则

记事本解码时 第一个字节是负的会自动和后面一个字节绑定在一起

读取记事本数字-->GBK-->北-->unicode-->21271

java只认识unicode

编码: 字符查码表得到数字

解码:数字--》码表--》字符

unicode每个字符都占两个字节

优点:

提高代码复用性

代码结构有条理

2.开闭原则

开闭原则

1.对宽展开发

2.对修改关闭

就是可以加功能而不能修改原来的功能

a.开发代码的程序员被划分为两种角色

作者 服务端

用户 客户端

b.我们不一定有作者的源代码,就算有c3p0的源码也不能改

如果一个类从头到尾是自己编写的,可以随时随地修改源代码,如果是别人写的不能修改代码。要符合开闭原则

3.接口隔离原则

接口隔离原则( Interface Segregation Principle, ISP)表明客户端不应该被强迫实现一些他们不会使用的接口,应该把胖接口中的方法分组,然后用多个接口替代它,每个接口服务于一个子模块。简单地说,就是使用多个专门的接口比使用单个接口要好很多。

ISP的主要观点:

1)一个类对另一个类的依赖应该是建立在最小接口上的。

2)客户端程序不应该依赖它不需要的接口方法。

就比如Dog这个类可以实现jump方法但是无法实现fly方法如果把所有功能都实现在animals类中的话,需要重写不必要的fly方法

因此应该把这些功能分开。比如说jump接口,fly接口等。这个时候Animals相当于胖接口。

public interface Animals {
     void jump();
     void fly();
     void swim();
}
public class TestAnimals {
        
}
class Dog implements Animals{

	@Override
	public void jump() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void swim() {
		// TODO Auto-generated method stub
		
	}
	
}

接口污染

如果为接口添加不必要的功能就是接口污染。

处理方式:

利用委托分离接口

利用多继承分离接口