【发布时间】:2009-12-09 05:50:54
【问题描述】:
假设我们有一个接口“IA”,我们有一个实现“A”。 在我们的应用程序域中,如果没有容器对象“X”,对象“A”永远不会存在。所以'A'永远不会被直接操作。 'A' 在 'X' 中聚合。
我们不想将“A”暴露给外界。为此,我们采取了方法,没有公共接口“IA”,而是直接在“X”中使用实现“A”。不知何故,我觉得这不是正确的方法。可能是我遗漏了一些基本的 OO 概念。
请发表意见。
PS:不提供“IA”的原因是:人们可能会为 A 想出自己的随机实现并玩弄系统。
好的。让我把实际问题放在这里。 我正在开发一个 Web 应用程序。我们有几个层次——Dao、Doamin、Service、Web。 服务层通过 DAO 为 Domain 对象提供各种服务。 我们有域对象——Wire 和 WireRequest。一个 WireRequest 可以有任意数量的 Wire。对应于这些领域对象,我们有两个服务——WireService 和 WireRequestService。 WireService 是使用 spring 注入到 WireRequestService 中的。
当我们将 service.jar 暴露给客户端时,他们可能会独立使用 WireService 并在没有 WireRequest 对象的情况下创建 Wire 对象。我们想防止这种情况。基本上我们想要控制对某些服务的访问。 (我们可以通过授权 spring 方面做到这一点,但想使用一些 OO 方式)
-奈恩
【问题讨论】:
-
是否有特定的语言将在其中实现?