gpt4 book ai didi

oop - 依赖注入(inject) - 这两个代码有什么区别?

转载 作者:行者123 更新时间:2023-12-01 09:34:23 25 4
gpt4 key购买 nike

我一直在尝试理解依赖注入(inject),并且一直在取得进展,但是

我想知道这些代码的好处/区别/重要性。它们看起来相同但方法不同

//dependency injection - (as was claimed)
Customer customer = new Customer(10);

IOrderDAO orderDAO = new OrderDAO();
customer.setOrderDAO(orderDAO);
customer.getOrdersByDate();

//Unknown Pattern - Please what pattern is this?
Customer customer = new Customer(10);
IOrderDAO orderDAO = new OrderDAO();
orderDAO.getOrderByDate(customer.id);

第二种方法有什么问题?

谢谢。

最佳答案

在我看来,两者都不像依赖注入(inject);不应调用 new

依赖注入(inject)是由一个连接所有依赖的bean工厂完成的。它实例化 bean 并为它们提供依赖项。

我看这里根本没有 bean 工厂。依赖注入(inject)还有很长的路要走。

在第一个示例中,客户使用 setter 获取 OrderDAO。第一个说客户必须在其 API 中公开持久性方法。它负责保存其订单。我会说这是一个糟糕的关注点分离,因为现在客户必须了解订单。

第二个将 Customer 与 OrderDAO 分开。您将客户 ID 传递给 OrderDAO 并让它代表该客户保存订单。我认为这是一个更好的关注点分离。

但是这两个都不是依赖注入(inject)的好例子。

对 DI 的第一个也是最好的描述来自 Martin Fowler。我建议您仔细阅读:

http://martinfowler.com/articles/injection.html

它已经 8 岁了,但仍然存在。

关于oop - 依赖注入(inject) - 这两个代码有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com