1、定义:a,设计系统时用抽象来分析,而不必一开始关注细节
b.针对接口编程,不要针对实现编程。通过接口进行函数、参数、变量声明,避免实现类自己去做各种声明。
2、实现:如果创建的是动态对象,要使用依赖倒换原则。实现类要去调用接口或抽象类。
3.例:公司有一个管理层,两个程序员分类,如何实现管理层指定某类程序员去工作:
根据依赖倒换原则,应该定义一个管理层接口,主要用于实现调用程序员,还应该定义一个程序员接口,然后不同类的程序员直接去实现这个接口,管理层实现直接调用程序员接口即可。
(1)管理层接口
public interface IEmloyee { public String code(Icode code);//管理人员让程序员编码,Icode是程序员接口 }
(2)管理层实现,直接调用程序员接口里面的方法
public class Code implements IEmloyee {//管理层接口的实现 public static String Run="工作。。。。"; public String code(Icode code) { System.out.println(code+"程序员开始工作"); return code.getRun(Run); // TODO Auto-generated method stub } }
(3)程序员接口
public interface Icode {//程序员接口 public String getRun(String run);//已经定义了不同类程序员要实现的方法 }
(4)两类程序员对程序员接口的实现
public class CommenProgrammer implements Icode {//普通程序员 private static final String Run="JAck"; @Override public String getRun(String Run1) { // TODO Auto-generated method stub System.out.println("普通程序员开始工作"); return Run; } }
public class SeniorProgrammer implements Icode{//高级程序员 public static final String Run="lll"; @Override public String getRun(String run) { // TODO Auto-generated method stub System.out.println("高级程序员开始工作"); return Run; }
(5)测试类,创建管理员让不同类的程序员工作
public class DIP { public static void main(String args[]){ IEmloyee employee=new Code();//创建一个管理员 Icode code=new SeniorProgrammer();//创建一个高级程序员 Icode code1=new CommenProgrammer();//创建一个普通程序员 System.out.println(employee.code(code));//让高级程序员干活 System.out.println(employee.code(code1));//让普通程序员干活 } }