首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表示参数/配置/设置

表示参数/配置/设置
EN

Stack Overflow用户
提问于 2009-05-04 18:16:27
回答 3查看 124关注 0票数 1

好的,假设我正在使用面向对象的语言编写一个应用程序,我有一组键-值对,它们代表程序,parameters/configuration/options/settings/etc.,这些可能是某些变量的初始值,或者只是在会话之间不一定会改变的值。我应该如何在数据模型中表示这些值?

我最初的想法是简单地将所有值存储在全局可访问的单个类中(可能是单例),因为这些值将在代码中的不同位置使用。然而,这将使所有其他类依赖于这个单例。

在这种情况下这是一个问题吗?有没有其他我没有想过的理想的解决方案?你们这些人通常如何表示这种类型的数据?关于这个问题还有什么我应该注意的吗?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2009-05-04 18:19:02

你可能想要使用依赖注入。创建接口IConfigurationProvider。创建一个实现该接口并执行实际任务的类DefaultConfigurationProvider。使其他依赖于配置数据的对象期望一个IConfigurationProvider实例,并为它们提供一个DefaultConfigurationProvider实例。大多数依赖注入框架都会为您处理此问题。

票数 1
EN

Stack Overflow用户

发布于 2009-05-04 18:41:40

“是单例配置的问题吗

不怎么有意思。

“依赖于这个单例的所有其他类”

不怎么有意思。您可以很容易地设计一些东西,以便某些类获得配置,并将其提供给其他类。

这是一个响应性问题--哪个类/包/方法负责这个配置问题。答案应该是非常非常少的类需要知道配置。

例如,您的模型可能应该专注于问题领域,而与实现的细微差别无关。它可能不需要任何配置。

:“还有什么理想的解决方案是我没有想到的吗?”

不怎么有意思。配置问题很难解决。您可能具有默认配置、覆盖到默认配置的命令行选项。这很复杂。

“你们通常如何表示这种类型的数据?”

大多数情况下都是单例。通常,给定应用程序中的几个关键“顶级”类必须知道配置,并使用该信息来配置所有其他类。

对于命令行程序,被"main“程序调用以解析参数的类也将知道配置。就是这样。

对于web应用程序,web应用程序的顶级部分使用配置来构建、配置、自定义或实例化其他内容。在许多情况下,key 工厂将使用配置来决定要创建的内容。关键的生成器可能需要配置来自定义其构建的复合对象。

配置不是“全局的”。并不是所有的类都能看到它。与数据库一样,它也是一种宝贵的资源,它被负责处理配置的类小心地包装起来。

“关于这个问题,我还有什么需要注意的吗?”

是。配置Singleton不是全局的。它是一种稀缺而宝贵的资源,被用于一些关键的地方。数量越少越好。

票数 1
EN

Stack Overflow用户

发布于 2009-05-04 18:23:14

这取决于你的具体情况。

例如,您可以为类上下文提供方法getParameter (字符串名)和setParameter (字符串名、对象值),以及保存配置参数所需的许多其他方法。

你可以在使用config的类的构造函数中以参数的形式传递上下文。参数:

代码语言:javascript
复制
public class ConfigUser {
   private Context c;
   public ConfigUser (Context c) {
      this.c = c;
   }
   ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/821265

复制
相关文章

相似问题

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