设计模式六大原则具体分析
1. 单一职责原则
单一职责原则指的是一个类只负责一项职责,这样做的优点是降低类的复杂度,当需要修改一个功能时,避免了对其它功能的影响
2. 里氏替换原则
里氏替换原则指的是子类可以在父类的基础上扩展功能,但不能修改父类本身的功能
子类可以添加自己的方法,可以实现父类的抽象方法,但是尽量不要重写父类的非抽象方法
当子类需要重写父类的方法时,不要改变方法的用途,不要影响原有的功能,避免代码出现问题
3. 依赖倒置原则
依赖倒置原则就是使用接口的多态性,面向接口编程
举个例子饲养员给动物喂食
首先需要一个动物接口
interface Animal{
public String eat();
}
猴子和老虎实现动物接口
class Monckey implements Animal{
@Override
public String eat(){
System.out.println("给猴子吃香蕉");
}
}
class Tigger implements Animal{
@Override
public String eat(){
System.out.println("给老虎吃肉");
}
}
饲养员
class People{
public feeding(Animal animal){
animal.eat();
}
}
运行
class client{
public static void main(String[] args){
People people = new People();
people.feeding(new Monckey());
people.feeding(new Tigger());
}
}
结果
给猴子吃香蕉
给老虎吃肉
如果没有Animal接口,饲养员给猴子和老虎喂食时,需要依赖猴子和老虎两个类
加上Animal接口降低了饲养员和动物类之间的耦合,当添加动物类的时候不会对饲养员类造成影响
4. 接口隔离原则
接口隔离原则是指一个类对另一个类的依赖应该建立在最小的接口上
当接口A有5个方法
类B、类C、类D实现接口A,但B只需要A的1、2两个方法,C只需要3、4、5三个方法,D需要全部5个方法
这时B和C就会多出来自己不需要实现的方法,这是不符合接口隔离原则的
这个时候最好的做法,就是将接口A细分成两个接口N、M,N有1、2两个方法,M有3、4、5三个方法
类B实现接口N,类C实现接口M,类D则实现接口N和M
这样区分为几个接口,建立最小的依赖关系
5. 迪米特法则
迪米特法则是指一个对象对其他对象的了解越少越好,要做到高内聚,低耦合
举个例子,有老板、部门、部门员工三个角色,老板要了解部门员工时,只需要通过部门来了解,将部门作为中介,部门员工有关的业务封装在部门里,老板不直接接触
6. 开闭原则
开闭原则指的是对扩展开放,对修改关闭