实现可配置的工厂模式
本文关键字:工厂 模式 配置 实现 | 更新日期: 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等),那么您已经做了一些类似的事情,这些概念对您来说应该有些熟悉。
解释它并向你展示如何使用它需要一本书。然而,我有理由相信它会最好地解决你的问题。有书,博客,视频,还有很多很多的例子。