zoukankan      html  css  js  c++  java
  • ASP.NET Microsoft .NET Pet Shop 3.x(二)

    正在学习PetShop3.x,现将一些自己的一些总结写出来.
    PetShop3.x分层分得很清楚,分别为UI,Business Layer,Data  Access Layer,典型的N层体系结构.表现的
    非常棒.
    但是仔细一看源代码,发现并不是那么简单分清楚,原因就是在表现Data Access layer时,做了一些易于扩展的
    架构,那就时工厂模式.所以为了把它搞清出,我专门选了一个功能来研究,其他的功能基本上都是一样,大同小异了.我挑选的是Product这个.
    先来一张图:

    可以看到,PetShop.Web的Catagory调用BLL层里的Product,
    代码如下:可以在catagory.aspx.cs中找到
     // Check to see if the contents are in the Data Cache
       if(Cache[categoryKey] != null){
        // If the data is already cached, then used the cached copy
        products.DataSource = (IList)Cache[categoryKey];
       }else{
        // If the data is not cached, then create a new products object and request the data
        Product product = new Product();
        IList productsByCategory = product.GetProductsByCategory(categoryKey);

        // Store the results of the call in the Cache and set the time out to 12 hours
        Cache.Add(categoryKey, productsByCategory, null, DateTime.Now.AddHours(12), Cache.NoSlidingExpiration , CacheItemPriority.High, null);
        products.DataSource = productsByCategory;
       }

    而PetShop.BLL.Product的GetProductsByCategory是如何处理的呢?
    看看如下代码
     public IList GetProductsByCategory(string category) {

       // Return null if the string is empty
       if (category.Trim() == string.Empty)
        return null;

       // Get an instance of the Product DAL using the DALFactory
       IProduct dal = PetShop.DALFactory.Product.Create();

       // Run a search against the data store
       return dal.GetProductsByCategory(category);

      }

    上面就是其实现代码了.我们会发现用到了了PetShop.DALFactory,这个就是工厂模式了.Create了一个IProduct的实例.其实
    这个时候它创建的是来自PetShop.SQLServerDAL的Product类,所以调用的是PetShop.SQLServerDAL.Product.GetProductByCatagory方法,而不是PetShop.OracleDAL.Product.GetProductByCatagory.关于这个以后再来讨论.
    说到这里,我想我对他的如何调用都熟悉了.

  • 相关阅读:
    redis 定义序列号
    mac下搭建phalcon扩展以及phalcon-devtools扩展
    rabbitmq集群架构(转载)
    mysql下limit分页优化思路
    ffmpeg图片格式转换,webp转换成jpg,webp转换成png,jpg转换成png,jpg转换成webp,png转换成webp,png转换成jpg
    sed替换多个字符串在一条命令里面
    CentOS7减轻DDOS攻击,使用fail2ban预防CC攻击
    ffmpeg改变jpg,png,webp图片大小
    wget下载github的releases的软件
    CentOS6.5设置IPTables防火墙
  • 原文地址:https://www.cnblogs.com/confach/p/112355.html
Copyright © 2011-2022 走看看