首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖注入:所有服务方法都接收相同的可新对象

依赖注入:所有服务方法都接收相同的可新对象
EN

Stack Overflow用户
提问于 2014-05-11 06:57:47
回答 1查看 58关注 0票数 0

让我们以一个在2D和3D之间投影和取消投影的类为例。

代码语言:javascript
复制
class Projector
{
    Point2D projectPoint(const Point3D& worldPoint) const;

    Point3D unProjectPoint(const Point2D& screenPoint, const Plane& plane) const;
};

这两种方法都需要使用Camera对象。实现它的首选方式是什么:

A.在Projector构造函数中传递Camera。B.在每个类方法中传递Camera。C.在使用类方法之前在setter方法中传递Camera。

选项A打破了DI,因为相机是一种新产品。选项B表示每次调用都会传递相同的摄像头实例。在具有5-6个方法的接口中,将相同的实例传递给每个方法将导致不太美观的代码。选项C可以工作,但是它意味着这个类的用户需要知道他应该设置摄像头-有一个风险,他会忘记这样做,并且不会理解为什么代码不能工作。

实现它的首选方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-05-11 07:06:03

我会在构造函数中传递相机,并将使用它的相机和投影仪作为该作用域中的实例。听起来范围是由“观点”定义的。

也许相机是视点,而投影仪是相机的单件?

对我来说,构造函数绝对是最好的。这可能是一个如何获得投影仪和/或相机的问题。您正在推断一个域约束,因此请编写约束代码。可能的限制是一个“视点”有一个摄像头,并且....投影仪。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23587185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档