当前位置:  技术问答>java相关

欢迎讨论DIP(赖倒转原则),我有一些不是很明白?

    来源: 互联网  发布时间:2017-04-05

    本文导语:  依赖于抽象而不依赖于具体实现。 如果依赖于抽象类型,当这个具体类型不用了,改为另一个类型,客户端就完全不知道具体类型已经有所变化。 我决的如果具体类已经变了,客户端也应该变化,回为java在instance时...

依赖于抽象而不依赖于具体实现。
如果依赖于抽象类型,当这个具体类型不用了,改为另一个类型,客户端就完全不知道具体类型已经有所变化。
我决的如果具体类已经变了,客户端也应该变化,回为java在instance时用的是new关键字。

例如:
变化前:
 public interface IA {

}

public B implements IA {

}

//clinet
IA ia = new B();

变化后:

public C implements IA {

}

//clinet
IA ia = new C(); //这里客户端也变化了。


请大家解释一下?




|
在这里,客户端只有创建工作需要显式的与对象有关,而其它的操作都只与接口有关。当用不同的对象实现某个接口时,除了对象创建外,其它的代码不需要动,而创建的代码是最直接的。

如果真要强调客户端的透明性,用抽象工厂模式就可以不用知道任何要创建对象的细节,只需要用相应的参数传给工厂对象。

在实际应用中,不可能如此严格地遵循原则。把所有的原则都遵循了,什么软件都做不成。

|
很多时候并不是直接用new来得到新对象,可能是一个方法返回的结果呢?
比如:
IA ia = anotherObject.getTheImplentationOfA(someParameter);

想想在使用java.util包中的一些对象(Collection,Set)时,获取Iterator的情形。再想想如果java.util支持多种Iterator的实现,你的客户代码怎么变呢?

Merry Christmas&Have fun!

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 欢迎加入Linux群 群号:11791406 iis7站长之家
  • 求助 如何取消fedora 8启动时候的欢迎应用程序
  • 欢迎加入Linux群 群号:11791406
  • http://www.itpub.net 论坛更换数据库,速度更快,欢迎大家前去讨论!
  • 强烈要求开辟UnixLinux下编程论坛,欢迎跟贴
  • 欢迎大家来聊聊Linux在国内的应用!
  • 欢迎访问http://211.71.69.201/joyfire/
  • 散分,欢迎访问joyfire.net
  • 欢迎灌水。。。。。。
  • 欢迎高手指点迷津
  • 超酷数据库工具发布(JAS), 欢迎使用
  • 欢迎大家到c/c++ 面向对象去作客(请版主不要删)
  • 我刚建的论坛,欢迎访问:http://its.letfree.com/forum
  • Linux9.2版本无法启动欢迎程序,SOS
  • linux qq群 欢迎加入!!!!!!!
  • 怎样将redhat9的欢迎界面改成英文的?
  • 欢迎大家进来谈谈!!
  • Android world群:62553058欢迎大家加入!
  • 欢迎进入linux网络栈学习群111201180
  • [高分求助]安装Elastix报错,无法进入欢迎界面


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3