关于DIP原则中接口的放置问题,请大家指点一下。

DIP原则里边抽取出来的接口,应该放在哪里呢?
是制订这个接口的类所在的包(需求方),还是实现这个接口的类所在的包(实现方)?

想了半天也找不到一个合适的方法,只好来烦劳高手们指点一下。

另:其实我在CSDN也发了篇这样的帖子,但是想到有些高手可能是不逛CSDN的,所以也一并在这里问一下。请谅解。

又:C++关于封装有《C++大规模编程》,java有类似的书么?

请教一下,什么是DIP原则?

一般是放在实现方。
比如java.util.List和ArrayList。根据情况也可能不同,比如java.sql和jdbc的实现类。但是很少将接口和接口的使用类放在一起的,目的不明,难道是为了使用方便?
另外DIP和包的定义没有关系,它告诉你设计的原则,而不是细节。

谢谢指点!
CSDN都没有人理我@_@
呵呵,一时迷糊了,认为由使用方定义接口,就应该由使用方持有:P
其实仔细一想,这样一来,实现包根本就没有办法单独重用嘛!

youngS:DIP就是依赖倒置原则。

《C++大规模编程》→《大规模C++程序设计》
说错了,不好意思。

不知道java有类似的资料么?恳请大家指点一二。

> youngS:DIP就是依赖倒置原则。

谢谢,^_^

在Java中 DIP和Ioc应该是同一概念。

>》→《大规模C++程序设计》
>不知道java有类似的资料么

J2EE最初一个主要设计目标是针对大规模项目的,设计模式。框架等重用概念对于Java要比C++自然得多。当然我这里不是想引发这两者之间套论。

多谢banq大哥指点。
呵呵,大哥可能没有看过《大规模C++程序设计》,它是本比较另类的书,书名是程序设计,其实主要讲的是开发中语言特性的使用,与设计模式没有什么关系:)

我现在对DIP又有了一点新的认识,不知道对不对,还请多多指点:

接口如何分包,只是一种表象,它表现的是接口的所有权(即决定权与变更权)的分派。
接口单独封包,只是一种简单的折衷。

接口所有权归使用方,能够方便地更换实现;
而接口所有权归实现方,则能方便地重用实现。

更换实现与重用实现,孰轻孰重,便是是否使用DIP的决定条件。

关于DIP和IoC,我想应该不是同一个概念,不过IoC确实是适于使用DIP。
呵呵,个人观点:P

不好意思!
把loc看成了IoC……(-_-;)
呃,loc是什么?