这就是我们的功能代码的结构
功能代码调用ConfigAdapter
,可以从任何其他商店获取配置
现在随着需求的变化和解耦配置,我们创建了一个名为ABCConfigAdapter
的新类(考虑" ABC"是一些业务特定术语)。
ABCConfigAdapter
与ConfigAdapter
具有相同的方法,但现在还有一个额外的参数要传递,称为ABCConfigAttributes
。 ABCConfigAttributes
确定我们获取" ABC"的配置方式。业务用例。
由于ConfigAdapter
用于功能代码需要某些配置的地方,现在变化很大。这不是实际问题,这里的问题是如何将ABCConfigAttributes
作为ABCConfigAdapter
的对象传递?
以下是一些方法:
ABCConfigAttributes
中的数据特定于某个特定主题,因此我们考虑将ABCConfigAttributes
存储在ThreadLocal
中,以及我们想要调用ABCConfigAdapter
的地方我们获取{来自ThreadLocal的{1}}并将其传递给ABCConfigAttributes
ABCConfigAdapter
从顶级传递到层次结构!显然#2的成本更高,因为它有很多侵入性的变化。我想了解在这些类型的用例中将Business对象存储在ThreadLocal中(如#1中所述)是否是一种好的做法?