实现可配置的工厂模式

本文关键字:工厂 模式 配置 实现 | 更新日期: 2023-09-27 18:27:04

现有实现:

我已经实现了DB连接的工厂模式。我有三个类似sql、oracle和sybase的数据库。sqlConnector、OracleConnector和SybaseConnector这三个类都在Iconnect接口中实现了,在工厂方法中,我根据开关情况和返回的特定对象创建了这些具体类(sqlConnector、Oracle Connector和SybaseConnector)的对象。

场景:

我想修改这个工厂模式,想从工厂方法中删除所有的开关情况,想通过配置文件/xml进行配置,也不需要使用反射和spring.net。假设tomorow我引入了新的数据库类型,我不想更改代码。我将在config/xml中进行输入,它应该在不更改工厂的情况下将对象返回给客户端。

问题:

我如何实现可配置的工厂模式意味着假设明天引入像"MySql"这样的新数据库类型,我不想更改工厂的代码。

实现可配置的工厂模式

这是一个非常宽泛的问题,但我认为最适合您的技术是托管可扩展性框架或MEF。

MEF是.NET不可或缺的一部分,它允许您在解决方案中包含其他组件,而无需事先知道这些组件是什么。在构建解决方案后,MEF会自动发现组件并将其包含到解决方案中。

您定义了可以扩展解决方案的点;编写每个组件是为了利用这些可扩展性点;MEF自动将它们联系在一起。

如果您使用了控制反转框架,如依赖注入库(Ninject、Castle Windsor、SimpleInjector等),那么您已经做了一些类似的事情,这些概念对您来说应该有些熟悉。

解释它并向你展示如何使用它需要一本书。然而,我有理由相信它会最好地解决你的问题。有书,博客,视频,还有很多很多的例子。