考虑一个现有的数据访问和业务逻辑层,该层被多个不同的应用程序使用,并且到目前为止,在任何使用它的给定应用程序的生命周期内只需要一个数据连接 - 所以连接信息可以简单地由数据提取应用程序配置文件中的层。然而,展望未来,数据和逻辑类需要为应用程序提供灵活性,以便在每次调用的基础上确定数据连接。更重要的是,这些类现在被多个应用程序通过服务同时调用。
调用者不想专门管理连接字符串,而是希望以枚举形式的连接名称可以解析为数据层中的连接字符串。
目前,所有数据和逻辑类都是静态的,数据范围为内部,逻辑范围为公共。
考虑到 API 可用性、性能、线程安全/调用者隔离等因素,有哪些好的策略可以从调用者一直到数据类中的方法获取密钥?
两个明显的选择是:
将连接键作为参数添加到所有方法。糟糕 - 不会发生,但包括完整性。
将逻辑和数据类更改为实例类,并在构造函数中传递密钥以供任何成员方法使用。不会有方法签名更改,而是对 API 的调用方式进行重大更改。
还有哪些其他选择?