我的应用程序有一个BusinessLogic层,它调用DatabaseAccessLayer,它包含一个CRUD操作的静态类。它打开与我的数据库的连接,执行更新然后返回(它不会单独存储任何内容)。
当我的端点需要控制其写入的数据库(TEST1,TEST2,DEV等)时,问题就出现了。我需要将连接字符串传递给静态类。
我很难理解为什么接口比使用类的直接实例更好,反之亦然,或者确实如果有另一个首选方法(我读了一篇关于使用委托的帖子,但这对我来说似乎很老套)。
我尝试编写接口,在DatabaseAccessLayer中实现它,但是如何从业务逻辑层调用它?我不在乎BL点上DAL中的代码是什么,我只是想让它调用该代码。但似乎如果我实现它,我必须实现所有方法(那里有什么代码!)。我知道你不能声明接口的实例并调用方法。
有人可以提出建议吗?使用类的实例是否足够?
答案 0 :(得分:1)
我认为你混合了两个相当不同的东西,即接口和类的实例。
用非常简单的话说:
关于你的各种连接的问题,现在,这是另一个,我相信无关紧要的问题。您的课程静态,好的,这意味着可能无法创建实例。您可以通过调用其方法直接使用它。您始终可以将连接字符串作为参数传递给其任何方法。事实上,这就是我建议你解决问题的方法:
将连接字符串作为参数传递给其任何方法
编辑:现在我再次看到你的问题......你可能遇到静态类成员字段的问题,如果你有连接字符串作为静态类的字段!请注意,静态类的字段是 shared ,这意味着,如果使用该类更改了任何端点,则会针对将使用该类的所有其他端点更改它们。所以,这可能会给你带来麻烦...
在那种情况下......再次...... 将连接字符串作为参数传递给其任何方法
Edit2:不,我建议您将conn String作为参数传递给数据层,这是错误的!数据层应该封装连接字符串(作为内部参数)。消费者不应该知道数据的方向 - 无论是DEV还是PROD。