跟踪petshop系列二:调用的优先级

来源:互联网 发布:贵友玻璃优化排版软件 编辑:程序博客网 时间:2024/06/05 23:33

 又看了一遍,又有了一点体会。
web-->modle-->bll-->dalfactory-->sqlserverdal-->sqlhelper
那么你肯定会问那个idal接口呢,据我看来他只是在设计时为了方便才引入的。分析如下:
我首先建立了实体(这是一种做法,在项目开始时要看具体情况而定),然后写接口,声明我要对他进行哪些操作;然后写sqlserverdal和sqlhelper的具体实现。代码说明:
bll:
public AccountInfo SignIn(string userId, string password) {
      if ((userId.Trim() == string.Empty) || (password.Trim() == string.Empty))
    return null;
      IAccount dal = PetShop.DALFactory.Account.Create();  //调用函数
      AccountInfo account = dal.SignIn(userId, password);
   return account;
  }
dalfactory:
public static PetShop.IDAL.IAccount Create()
  {   
      string path = System.Configuration.ConfigurationSettings.AppSettings["WebDAL"]; //调用web.config节
   string className = path + ".Account";
    return (PetShop.IDAL.IAccount) Assembly.Load(path).CreateInstance(className);
  // 通过反射找到  PetShop.SQLServerDAL。Account  ,返回接口。而接口有SignIn(userId, password)方法,
而此方法的实现是sqlserverdal。也就是说我找到了操作用户的方法了,具体怎么实现的我不需要再管了。
  }
web.config:
 <add key="WebDAL" value="PetShop.SQLServerDAL" />
在这里,bll中是直接调用工厂的,工厂又指向了sqlserverdal,而sqlserverdal又继承了接口。所以接口只是在
设计之初为了方便而建造的。
工厂方法就如:一位客人去饭店叫饭说,我要米饭。那等一会,服务员会给你端来。
用户在bll中说我要操作用户的接口,那工厂方法就给了你Iaccount接口。

 

原创粉丝点击