相关疑难解决方法(0)

控制反转与依赖注入

根据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++对象(PO​​JO/POCO).

除依赖注入模式之外的控制容器的反转(存档链接)

附加阅读以了解旧的基于组件的开发框架的问题是什么,这导致了上面的第二篇论文:为什么以及什么是控制反转(存档链接)

我的问题:IOC和DI究竟是什么?我很迷惑.基于pococapsule,IOC比仅仅反转对象或程序员和框架之间的控制更重要.

dependency-injection inversion-of-control

467
推荐指数
14
解决办法
26万
查看次数

259
推荐指数
5
解决办法
27万
查看次数

代理和装饰模式之间的差异

你能解释一下ProxyDecorator之间的区别吗?

我看到的主要区别在于,当我们假设Proxy使用合成Decorator使用聚合时,似乎很清楚通过使用多个(一个或多个)装饰器,您可以修改/添加功能到预先存在的实例(装饰),而代理有自己的代理类的内部实例,并委托给它添加一些额外的功能(代理行为).

是个问题-是否代理与聚集创造仍然是代理还是相当装饰?是否允许(通过GoF模式中的定义)创建具有聚合的代理

oop design-patterns decorator proxy-pattern

108
推荐指数
7
解决办法
3万
查看次数

Java中聚合和组合的实现差异

我知道聚合和组合之间的概念差异.有人可以通过示例告诉我它们之间Java的实现差异吗?

java composition relationship aggregation

98
推荐指数
5
解决办法
10万
查看次数

聚合与组合

我很难理解UML中组合和聚合之间的区别.有人可以给我一个很好的比较和对比吗?我也很想学会在代码中识别它们之间的区别和/或看一个简短的软件/代码示例.

编辑:我问的部分原因是因为我们正在进行的反向文档活动.我们编写了代码,但是我们需要返回并为代码创建类图.我们只是想正确地捕捉这些关联.

java oop uml

86
推荐指数
7
解决办法
8万
查看次数

关联和依赖之间的区别?

在UML类图中,关联关系和依赖关系之间有什么区别?

据我所知,一个联系是一种更强大的关系,而不是依赖关系,但我不确定它是如何更强大的.

任何一个例子都会受到欢迎:)

uml

79
推荐指数
6
解决办法
7万
查看次数

KVO vs NSNotification vs protocol/delegates?

虽然我有一些想法可以使用,但确切的用法仍然不清楚.有人能解释一下......?谢谢.

iphone protocols key-value-observing nsnotifications ios

34
推荐指数
2
解决办法
2万
查看次数

关联与聚合

我已经回顾了很多关于这些事情的信息,但是无法理解它们之间有什么区别?在Fowler的UML Distilled中说,Aggreagation绝对没有意义,因此作者建议不要在图表中使用它.请解释一下,何时我应该使用它们以及它将如何影响java代码.

java oop uml

30
推荐指数
4
解决办法
3万
查看次数

REST API设计:嵌套集合与新根目录

这个问题是关于最佳REST API设计和我在嵌套资源和根级别集合之间选择的问题.

为了说明这个概念,假设我有收藏City,BusinessEmployees.典型的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)

第二次和第三次调用虽然看起来在正确的位置,但使用了许多实际上不必要的参数.

  • 为了让员工参与到业务中,唯一需要的参数是business(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)

rest api-design conceptual

30
推荐指数
3
解决办法
7575
查看次数

组合和关联关系有什么区别?

在OOP中,组合(由UML中的填充菱形表示)与类之间的关联(由UML中的空菱形表示)之间的区别是什么.我有点困惑.什么是聚合?我能有一个令人信服的现实世界的例子吗?

oop

22
推荐指数
4
解决办法
2万
查看次数