根据Martin Fowler撰写的论文,控制反转是程序控制流程被颠倒的原则:代替程序员控制程序流程,外部源(框架,服务,其他组件)控制它.这就像我们把东西塞进别的东西.他提到了一个关于EJB 2.0的例子:
例如,会话Bean接口定义ejbRemove,ejbPassivate(存储到辅助存储)和ejbActivate(从被动状态恢复).你无法控制何时调用这些方法,只是它们的作用.容器打电话给我们,我们不打电话给它.
这导致框架和库之间的区别:
控制反转是使框架与库不同的关键部分.库本质上是一组可以调用的函数,这些日子通常组织成类.每个调用都会执行一些操作并将控制权返回给客户端.
我认为,DI是IOC的观点,意味着对象的依赖性被颠倒了:相反,它控制着自己的依赖关系,生命周期......还有其他东西为你做.但是,正如你用手告诉我的DI,DI不一定是IOC.我们仍然可以有DI而没有IOC.
然而,在本文中(来自pococapsule,另一个IOC C/C++框架),它表明,由于IOC和DI,IOC容器和DI框架远远优于J2EE,因为J2EE将框架代码混合到组件中因此不能成为普通的旧Java/C++对象(POJO/POCO).
除依赖注入模式之外的控制容器的反转(存档链接)
附加阅读以了解旧的基于组件的开发框架的问题是什么,这导致了上面的第二篇论文:为什么以及什么是控制反转(存档链接)
我的问题:IOC和DI究竟是什么?我很迷惑.基于pococapsule,IOC比仅仅反转对象或程序员和框架之间的控制更重要.
我有一个现有的iOS应用程序,并希望添加一大块代码,我一直在开发另一个项目,以方便测试.新的块基本上处理将图像保存到各种共享服务等.因为共享代码需要大量的测试和未来的更新,我想知道将代码块合并到我现有的应用程序中的最佳方法是什么.
我不知道它应该是静态库,动态库还是框架,老实说,我不确定区别是什么,或者我应该如何去做它并在Xcode中设置它.
我所知道的是,我需要/想要为共享代码保留单独的测试和更新应用程序,并让主应用程序使用它.
如果你还不能说,我不是一个git wiz.我只是一个简单的单人开发人员.
任何帮助或方向将不胜感激.谢谢!
这里,在框架类别下提到了jquery:http: //en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks
jquery是javascript库还是框架?
我是Java世界的新手(7年的低级平原C).
当我开始阅读Java相关网站时:
我对现有的术语感到困惑:
我找到了许多关于术语定义的资源(还有更多):
但是这些资源中的每一个都根据自己的目的来定义它们,在一般情况下我仍然无法区分模块和组件.
请在大图中解释这些术语的含义(可以是单一类平台,制作容器需要多少模块等).
更新2019年来自https://www.artima.com/lejava/articles/reuse3.html(我的重点介绍)
Bill Venners:框架,平台和工具包之间的区别是什么,以及不同的灵活性需求是什么?
Erich Gamma:通过平台,我将长期稳定性联系在一起.在平台上构建是安全的.平台提供兼容性保证.框架通常没有这种质量,我已经看到许多框架在稳定性方面的失败.如果你看一下Eclipse,是的,它包括框架,工具包,并提供平台API.所有这些都捆绑为插件.框架抽象并提供更高级别的默认功能.为此,框架需要得到控制.这种失控可导致有时被称为框架炎.
Bill Venners:工具包没有因为......
Erich Gamma:使用工具包,您可以创建并调用工具包对象并注册侦听器以对事件做出反应.你在掌控之中.框架试图控制并告诉您何时做什么.一个工具包为您提供了基石 …
我是AI世界的新手,我开始使用Python和OpenCV进行面部检测等等.我知道通过一些算法的实现,我可以使用Python和OpenCV开发AI系统.所以我的问题是:Tensorflow在这里的立场是什么?我可以说Tensorflow是OpenCV的替代品吗?我可以说Python是Java的另一种编程语言(例如).
javascript ×3
jquery ×3
terminology ×3
angularjs ×2
frameworks ×2
architecture ×1
enterprise ×1
glossary ×1
html ×1
ios ×1
java ×1
java-ee ×1
node.js ×1
oop ×1
opencv ×1
principles ×1
tensorflow ×1
xcode ×1