2013-04-23 68 views
0

我正在C#中开发应用程序(但这不相关,因为我不想使用任何语言工具),我需要处理到数据库的连接。我会避免明确创建每个方法的接口,如:提供全局访问数据库处理程序

private void btnAnteprima_Click(object sender, EventArgs e) 
{ 
    SqlConnection myConnection = new SqlConnection("user id=***;" + 
        "password=***;server=***;" + 
        "database=***"); 
    myConnection.Open(); 
    SqlDataReader myReader = null; 
    SqlCommand myCommand = new SqlCommand("select * from *** where IDCliente=*", myConnection); 
    myReader = myCommand.ExecuteReader(); 

    while (myReader.Read()) 
    { 
     MessageBox.Show(myReader["xyz"].ToString()); 
    }   
} 

我想是这样的:

private void btnAnteprima_Click(object sender, EventArgs e) 
{ 
    SqlReader myReader = DbFactory.ExecuteQuery("select * from *** where IDCliente=*"); 

    while (myReader.Read()) 
    { 
     MessageBox.Show(myReader["xyz"].ToString()); 
    }   
} 

据我所知,使用Singleton模式是没用甚至有害的:性能条款。我徘徊于工厂模式来实现这一点,但我无法弄清楚如何做到最好。你有没有例子,纸张来做到这一点?我不想重新发明轮子,我只想使用正确的设计模式,并了解车轮背后的原因。

+0

我很确定你使用C#*的事实是相关的。每种语言都有其数据库抽象API和依赖注入框架,并且很难给出与语言无关的最佳实践。单身反模式不是一个模式,因为它的性能,但由于它引起的耦合和缺乏可测试性。 – 2013-04-23 11:24:42

+0

我知道这一点,但我会把我的知识推到框架API和设施之外...... – 2013-04-23 12:15:18

+0

这是一种说“我想重新发明轮子而不是使用标准方式”的新方式吗? – 2013-04-23 12:52:03

回答