根据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比仅仅反转对象或程序员和框架之间的控制更重要.
你能解释一下Proxy和Decorator之间的区别吗?
我看到的主要区别在于,当我们假设Proxy使用合成而Decorator使用聚合时,似乎很清楚通过使用多个(一个或多个)装饰器,您可以修改/添加功能到预先存在的实例(装饰),而代理有自己的代理类的内部实例,并委托给它添加一些额外的功能(代理行为).
是个问题-是否代理与聚集创造仍然是代理还是相当装饰?是否允许(通过GoF模式中的定义)创建具有聚合的代理?
我知道聚合和组合之间的概念差异.有人可以通过示例告诉我它们之间Java的实现差异吗?
我很难理解UML中组合和聚合之间的区别.有人可以给我一个很好的比较和对比吗?我也很想学会在代码中识别它们之间的区别和/或看一个简短的软件/代码示例.
编辑:我问的部分原因是因为我们正在进行的反向文档活动.我们编写了代码,但是我们需要返回并为代码创建类图.我们只是想正确地捕捉这些关联.
在UML类图中,关联关系和依赖关系之间有什么区别?
据我所知,一个联系是一种更强大的关系,而不是依赖关系,但我不确定它是如何更强大的.
任何一个例子都会受到欢迎:)
虽然我有一些想法可以使用,但确切的用法仍然不清楚.有人能解释一下......?谢谢.
我已经回顾了很多关于这些事情的信息,但是无法理解它们之间有什么区别?在Fowler的UML Distilled中说,Aggreagation绝对没有意义,因此作者建议不要在图表中使用它.请解释一下,何时我应该使用它们以及它将如何影响java代码.
这个问题是关于最佳REST API设计和我在嵌套资源和根级别集合之间选择的问题.
为了说明这个概念,假设我有收藏City,Business和Employees.典型的API可以如下构造.想象一下,ABC,X7N和WWW是关键,例如guids:
GET Api/City/ABC/Businesses (returns all Businesses in City ABC)
GET Api/City/ABC/Businesses/X7N (returns business X7N)
GET Api/City/ABC/Businesses/X7N/Employees (returns all employees at business X7N)
PUT Api/City/ABC/Businesses/X7N/Employees/WWW (updates employee WWW)
Run Code Online (Sandbox Code Playgroud)
这看起来很干净,因为它遵循原始域结构 - 业务在城市,员工在公司.单个项目可通过集合下的密钥访问(例如,../Businesses返回所有业务,同时../Businesses/X7N返回单个业务).
以下是API消费者需要做的事情:
(GET Api/City/ABC/Businesses)(GET Api/City/ABC/Businesses/X7N/Employees)(PUT Api/City/ABC/Businesses/X7N/Employees/WWW)第二次和第三次调用虽然看起来在正确的位置,但使用了许多实际上不必要的参数.
X7N)的关键.WWW)后端代码中的任何内容都不需要非关键信息来查找业务或更新员工.因此,相反,以下端点看起来更好:
GET Api/City/ABC/Businesses (returns all Businesses in City ABC)
GET Api/Businesses/X7N (returns business X7N)
GET Api/Businesses/X7N/Employees (returns all employees at business …Run Code Online (Sandbox Code Playgroud) 在OOP中,组合(由UML中的填充菱形表示)与类之间的关联(由UML中的空菱形表示)之间的区别是什么.我有点困惑.什么是聚合?我能有一个令人信服的现实世界的例子吗?
oop ×5
uml ×4
java ×3
aggregation ×1
api-design ×1
composition ×1
conceptual ×1
decorator ×1
ios ×1
iphone ×1
protocols ×1
relationship ×1
rest ×1