依赖倒置原则的核心思想是面向接口编程,而不面向实现编程。
例1 )顾客购物程序。 分析显示,顾客购物后再从成都商店和兰州商店购物。 uml图如下所示
1 .顾客从很多商店购物,抽象出一个商店的界面,
public interface Shop { void sell (; )2.兰州和成都商家实现shop购买方式
publicclasschengdushopimplementsshop { @ overridepublicvoidsell ((system.out.println ) ) (买成都特产); }购买publicclasslanzhoushopimplementsshop { @ overridepublicvoidsell ((system.out.println ) )兰州特产:拉面); }3.客户购买方式
public class custom { public void buy (shop shop ) { shop.sell; (4.实现
=new(//购买兰州特产. buy (newlanzhoushop ) ); //买成都特产custom.buy (newchengdushop ) ); 例2学生学习课程(java,c )。 )
UML图如下所示
1 .抽象课程的学习动作。
publicinterfacecourse { void study (; }2.2两种课程实现course
publicclassjavacourseimplementscourse { @ overridepublicvoidstudy () } { system.out.println (上Java课程() ); } publicclasscpluscourseimplementscourse { @ overridepublicvoidstudy () { System.out.println (学习C课程) ); }3.学生学习课程的方法
public class Student { /** *是注入* @ param course */public void study (course.study ); (4.实现
Student student=new Student (; sudent.study(newJavacourse ) ); sudent.study(newcpluscourse ) ); 此时注入方式的通过依赖注入有结构注入(根据结构方法)和set注入(根据set方法(在单个例子中只能通过该时钟的fangs ) )两种注入方式。
Student类
/** *课程属性* /私有课程; 公共void study { course.study }; } /** * set注入*/publicvoidsetcourse (course course ) { this.course=course; } /** *结构注入* @ param course */public student (course ) { this.course=course; }实现方式
/** *结构注入*/System.out.println ()结构方式注入: ); sudent student=new student (newjavacourse ) ); student.study (; /** * set注入*/System.out.println (; system.out.println(set方式注入: ); sudent.set course (newcpluscourse ) ); student.study (;
参考资料:
1.http://c.biancheng.net/view/1326.html
代码地址: https://gitee.com/zhoujie1/design-mode-and-principle.git