网站被降权表现,徐州网站排名,解决国外网站很慢,新泰网站建设方案接口隔离原则引出 接口隔离原则 定义#xff1a;用多个专门的接口,不使用单一的总接口,客户端不应该依赖它不需要的接口; 一个类对另一个类的依赖,应该建立在最小接口上;如果有一个大接口,里面有很多方法,如果使用一个类实现该接口,所有的类都要实现#xff0c;导致代码冗余;…接口隔离原则引出 接口隔离原则 定义用多个专门的接口,不使用单一的总接口,客户端不应该依赖它不需要的接口; 一个类对另一个类的依赖,应该建立在最小接口上;如果有一个大接口,里面有很多方法,如果使用一个类实现该接口,所有的类都要实现导致代码冗余; 建立功能单一接口,不要建立特别多功能的接口;接口设计不能过大过小适度接口。 优点高内聚,低耦合,类具有很好的可读性,可扩展性,可维护性; 降低耦合平时设计接口时,只暴露客户端需要的方法,客户端不需要的方法,直接隐藏起来;提高内聚减少对外交互,使用接口中最少的方法,完成最多的事情; 实际开发中,对以后有可能会发生变更的地方做一些预判,抽象出业务模型。 接口隔离原则案例
public interface Animal{void eat();void fly();void walk();void swim();
}//实现一个鸟类swim方法是空的造成代码冗余public class Bird implements Animal{Overridepublic void eat() {}Overridepublic void fly() {}Overridepublic void walk() {}Overridepublic void swim() {}
}正确做法如下 public interface IEat {void eat();
}
public interface IWalk {void walk();
}
public interface ISwim {void swim();
}
public interface IFly{void fly();
}//鸟可以飞走吃不能游泳
public class Dog implements IEat,IWalk,IFly{Overridepublic void eat() {}Overridepublic void fly() {}Overridepublic void walk() {}
}迪米特原则引出 迪米特原则
定义一个对象应该对其它对象,保持最少的了解
尽量降低类之间的耦合对外部引入的类,越少越好
优点降低了类之间的耦合
代码层面不要对外公开太多的public方法和变量,多使用private/protected权限
核心观念类的解耦,解耦是有一定程度的,尽量做到弱耦合,耦合程度越低,类的复用率才能提高由于减少了类之间不必要的依赖,从而达到了降低了耦合的目的
只和朋友交流,不和陌生人说话
朋友出现在成员变量,方法的输入,输出参数中的类,称为成员朋友类出现在方法体内部的类,不属于朋友类也就是说类A,我使用了类A中的方法,或成员,尽量避免导致本类import导入新的类 迪米特原则案例 老师让班长记录考勤 //老师类
public class Teacher{public void checkAttendance(Monitor monitor) {ListStudent studentList new ArrayList();for (int i 0; i 50; i) {studentList.add(new Student());}monitor.checkAttendance(studentList);}
}
//班长类
public class Monitor{public void checkStudentAttendance(ListStudent studentList) {System.out.println(今天有 studentList.size()学生到教室);}
}
public class Student{
//学生类
}public class Main {public static void main(String[] args) {Teacher teacher new Teacher();Monitor monitor new Monitor();teacher.checkAttendance(monitor);}
}
//遵循迪米特原则
//Teacher直接给Monitor下指令 , Monitor去查考勤//老师类
public class Teacher{public void checAttendance(Monitor monitor) {monitor.checkAttendance();}
}
//班长类
public class Monitor{public void checkStudentAttendance(ListStudent studentList) {ListStudent studentList new ArrayList();for (int i 0; i 50; i) {studentList.add(new Student());}System.out.println(今天有 studentList.size()学生到教室);}
}
public class Student{
//学生类
}
public class Main {public static void main(String[] args) {Teacher teacher new Teacher ();Monitor monitor new Monitor();teacher.checAttendance(monitor );}
}