我正在构建一个包含多个Connector
类的应用程序,这些类与不同的数据孤岛交互。例如,请参阅我的早期问题here。无论如何,就像我的例子一样,几乎所有这些数据源在访问时都是昂贵的,因此每个Connector
都维护一个缓存来限制访问。对于每个数据筒仓,都有一个提取数据的IDataSource
,以及一个缓存的Connector
。 Connector
是通过在我的AppFactory
类中传递IDataSource
到工厂方法来访问的。这是否违反了概念完整性?
不幸的是,正是1 Connector
不适合这种模式。活动目录筒仓速度足够快,不需要缓存,所以不需要ActiveDirectoryConnector
,我的AppFactory
类也不会有工厂方法。正如我之前所说的,在其他任何情况下,都会从Connector
对象请求数据,只能通过IDataSource
参数从方法调用获得AppFactory
。
据我所知,我的选择是有一个浅ActiveDirectoryConnector
对象,只是将请求直接转发到它的IActiveDirectoryDataSource
,或根本没有ActiveDirectoryConnector
。在前一种情况下,我保持概念完整性与我的其余部分Connector
s,但我有一个无用的间接水平。在后者中,我牺牲了直接性的概念完整性。哪一个是较小的邪恶?
从某种意义上说,它只是简单的情况:零大小的缓存。 – 2010-08-05 20:46:20
我真的很喜欢类似于访问器方法。 ActiveDirectorConnector与公众类型名称{get; set;}类似,它验证了它的存在。 – DonaldRay 2010-08-06 16:55:25