首页 新闻 会员 周边

讨论一下设计实现方法

0
悬赏园豆:10 [已解决问题] 解决于 2011-08-12 07:31

有以下几个类(只是示例用),现在的问题是,我想对Database.ConnectionString这个内容进行修改,让中间的Bussiness可以不用修改就能影响整个Database的ConnectionString。不知道问题描述清楚了没有?算是设计方法的内容。

类1

public class Database
{
   public string ConnectionString{get;set;}
   public void dosomething()
   {
      ///doing some work using ConnectionString

   }
}

类2

public class Bussiness
{
  public void dosomething()
  {
   Database db=new Database();
  db.dosomething();
  }
}

类3
public class Test
{
  static int Main()

{
  Bussiness bs=new Bussiness();
  bs.dosomething();
  return 0;

}

}

问题补充:

好比一台很强大的机器,里面有很多的零件互相调用,那么我想换掉其中最里面的一个零件,而其他部分都不更换。

rdlc2的主页 rdlc2 | 初学一级 | 园豆:140
提问于:2011-08-10 15:06
< >
分享
最佳答案
0

你可以从配置文件中取

收获园豆:10
杯具程序员 | 小虾三级 |园豆:1718 | 2011-08-10 15:48
不是我想要的。我希望在调用Business才决定采用什么ConnectionString。

比如说在登录界面,根据用户的选择决定ConnectionString,而且之后所有都使用这个。如果在配置文件中使用,则每次登录后修改到某个地方,如果是webform,则多个用户登录必定造成麻烦。

因为Database和Bussiness可能用于WebForm,也可能用于Winform,等等。应该是一个通用的东西。
rdlc2 | 园豆:140 (初学一级) | 2011-08-10 16:23
或者把这个类写成静态的
杯具程序员 | 园豆:1718 (小虾三级) | 2011-08-10 16:32
嗯。把ConnectionString搞成一个类。

public DataBase()
{
m_connstring = ConnectionString.Instance.ToString();
}

public class ConnectionString
{
private static ConnectionString instance = null;

public static ConnectionString Instance
{
get
{
if (instance == null)
{
。。。。。
instance = (ConnectionString)t.Assembly.CreateInstance(t.FullName);
}
return instance;
}
set
{
instance = value;
}
}
}

使用的时候:
ConnectionString.Instance = new SessionConnectionString();

ConnectionString.Instance = new ConfigFileConnectionString();

这样前端和Database没有依赖。

谢谢
rdlc2 | 园豆:140 (初学一级) | 2011-08-11 13:33
没有 相互学习
杯具程序员 | 园豆:1718 (小虾三级) | 2011-08-11 14:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册