您所在的位置:主页 > Java培训 >

Java软件设计之依赖倒转原则

时间:2014-04-07 09:56来源:未知 作者:疯狂java 点击:

      Java软件的可维护与复用设计原则之依赖倒转原则

  由于传统的面向过程的软件设计原则一般是高层模快都依赖于低层模块,抽象层次依赖具体层次。而面向对象的软件设计原则改变了以往的传统观念,将上述关系倒转过来。从而引出依赖倒转原则,依赖倒转原则描述为:“抽象不应当依赖与细节,细节应当依赖与抽象。另一种表述为:针对接口编程,不要针对实现编程”。也就是说,使用接口和抽象类进行变量的类型声明、方法的返回类型定义,以及数据类型的转换是要保证一个具体的java类应当只实现的是接口或者抽象类,而不应当是具体类。比如,Shape代表抽象类,Circle代表具体类,那么Circle应依赖于Shape,而Shape不应该依赖与Circle。假如Shape是一个接口,声明变量是应该遵循“子类对象给父类引用”,即Shape s=new Circle();而不是Circle c=new Circle()。

  一般在设计的过程中联合使用接口和抽象类,主要原因是:类型声明一般由接口承担,但是同时还为接口提供一个默认的抽象实现类。其他同属于这个抽象类型的具体类可以选择实现这个接口,也可以选择继承自这个抽象类。如果需要向接口加入一个方法的话,只要同时向这个抽象类加入这个方法的具体实现就可以了,因为继承自这个抽象类的子类都会从这个抽象类得到这个具体方法,假如,Action接口和AbstractAction抽象类。

  在面向对象的系统中,两个类之间通常有以下三种依赖关系:a.零耦合:两个类之间没有耦合关系。b.具体耦合:具体耦和关系发生在两个具体的类之间,经由一个类引用另一个类形成。c.抽象耦合:抽象耦和关系发生在一个具体类和一个抽象之间,或者java与接口之间,使两个必须发生关系的类之间存在最大的灵活性。

  最理想的设计是一般类之间为零藕合,但一个系统中很少能有这种情况。依赖倒转原则显然很强大,但是不容易实现,因为依赖关系倒转的缘故,对象的创建可能会通过对象工厂来获取对象,避免对具体类的使用。此外,依赖倒转原则假定所有的具体类都是会变化的,这也不总是正确的,如果一个具体类是稳定的、不会发生变化的,那么使用这个具体类的客户端完全可以依赖于这个具体类型。

        更多Java技术分享,还在继续更新中,敬请关注疯狂软件教育官网,疯狂软件教育中心有有三大课程体系,java课程,ios课程,android课程,更多广州java培训机构培训课程信息期待你电话或者QQ咨询。