是否必须将Context传递给大多数类,这是一个糟糕设计的标志?

uTu*_*Fan 6 java oop android

Android的设计方式是,为了使方法能够读取资源,它必须具有对Context的访问权限.

由于我的应用程序中的大多数类依赖于字符串资源的灵活性(例如,更改语言而不必更改代码等),我的简单解决方案是在其构造函数中传递Context,以提供对每个此类的资源访问.

我只在构造函数中传递一个字符串是没有意义的,因为该类需要灵活地访问不同数量的字符串.

所以,为简化起见,我只传递Context,每当需要字符串资源时,我只使用Context.getString().

这是不好的设计标志吗?

有没有更好的方法来实现这一目标?

Boz*_*zho 5

这是服务定位器模式 - 您传递服务定位器(通常称为"上下文")并从中获取所需的依赖项.它不是一种反模式,并不是一个糟糕的设计,但通常依赖注入被认为是优越的.

你正在做的是 - 将服务定位器传递到对象图中.可取的是给每个类只提供它需要的依赖项.因此,不是传递Context构造函数,而是传递它需要的所有字符串.这样你就不会违反得墨忒耳法则

  • 我不同意.在这种情况下,KISS(保持简单)是更好的原则. (2认同)
  • 好吧,我期望在这里听到的最后一件事是数据封装很糟糕并导致"嘲笑整个世界".GL与您对OOP的理解. (2认同)

Eri*_*arr 4

这是罕见的情况之一,全局可访问的单例类可能比传递Context给每个单独的类更好。

我会考虑创建一个用于本地化的单例,然后使用Context其中的内部(除非您需要Context整个地方的其他方面)。

当然,这是一个品味和偏好的问题。青年MMV