所谓的职责指类变化的原因,如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是一个类或者模块应该只有一个改变的原因
一个类,只有一个引起它变化的原因,应该只有一个职责。例如:要实现界面与逻辑分离。
如果一个类担任的职责过多,就等于把这些职责耦合在一起。一个职责的变化可能会弱或者一直这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭到意想不到的破坏。而如果想要避免这种现象的发生,就尽可能的遵守单一的原则,此原则的核心就是解耦和增强内聚性。
产生的原因:
没有任何的程序设计人员不清楚应该写出高内聚低耦合的程序,但是很多耦合常常发生在不经意之间
解决原因:
遵守单一原则,将不同职责封装到不同的类与模块中
依赖倒转原则三种:
1)零耦合
2)具体耦合:发生在具体类之间
3)抽象耦合:发生在一个具体类和抽象类(或接口)之间
引用对象抽象类型
在很多情况下,一个java程序需要引用一个对象。这个时候,如果这个对象有一定的抽象类型的话,应当使用这个抽象类型作为变量的静态类型,这就是针对接口编程的含义
例如:蛋 x=new 鸡();
而非:鸡 x=new 鸡();
依赖倒转原则其实就是面向对象设计,用哪种语言不重要,如果编写时考虑的都是抽象编程而不是过程化编程,那就是面向对象设计,反之过程化设计。