gpt4 book ai didi

oop - 配置系统的设计指南?

转载 作者:行者123 更新时间:2023-12-04 14:00:54 24 4
gpt4 key购买 nike

尽管我已经为个人项目开发了一些桌面应用程序,但我的大部分编程都是在基于 Web 的应用程序中进行的。一个反复出现的设计问题是如何管理配置。例如,我们都知道在 ASP.NET 中经常使用 web.config 来保存配置信息,无论是生成的还是手动配置的。

在我什至不知道什么是设计模式之前,我会实现本质上是单例模式的东西。我会写一个静态类,在启动时,它会读取配置文件并将信息与任何自动生成的信息一起存储在字段中,然后通过某种访问器(属性)将这些信息暴露给应用程序的其余部分, get() 方法...)。

我脑海深处的某些东西不断告诉我,这不是解决问题的最佳方法。所以,我的问题是,是否有任何设计配置系统的设计模式或指南?配置系统应何时以及如何读取配置,以及应如何将此信息公开给应用程序的其余部分?应该是单例吗?我不是在询问推荐的存储机制(XML vs 数据库 vs 文本文件...),尽管我也对这个问题的答案感兴趣。

最佳答案

听起来不像是逃避,但这真的完全取决于您的应用。非常简单的应用程序(听起来像你在谈论基于 Web 的应用程序,所以我会跳过胖客户端),通常只需要全局配置(你可以使用 web.config 和单例)和每个用户配置(用户表,并且可能链接的配置表或名称/值对表可以处理。

更复杂的应用程序可能需要可保护和可覆盖的完整配置层次结构。例如,我可能有几个应用程序定义的默认值,可以为用户所属的每个组、用户本身以及管理员为特定组或用户定义的值覆盖,这些值不能被用户覆盖。

为此,我通常使用单例“根配置”对象,该对象具有公开层次结构的附加级别和每个级别的配置属性的方法。 root 负责解析层次结构,但如果有必要(例如设置配置),您可以自己遍历层次结构以处理特定于层次结构中单个级别的设置。

最后,还有延迟问题。如果您希望配置设置经常更改,每次请求时从存储中读取它们是最好的,但也是最昂贵的。

如果没有,您可以缓存设置以及“上次读取”日期,并在过期时间后简单地将设置值重新读入缓存。

关于oop - 配置系统的设计指南?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6077284/

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