zoukankan      html  css  js  c++  java
  • 范例-项目-.NET-PetShop-4.0-架构设计:模式的应用

    ylbtech-范例-项目-.NET-PetShop-4.0-架构设计:模式的应用
    1. 模式的应用返回顶部

    模式的应用

    • Factory模式
    • Strategy模式
    • Facade模式
    2. Factory模式返回顶部
    1、Factory模式
    2、

    在IDAL中,分别包含接口:

    • ICategory
    • IInventory
    • IItem
    • IOrder
    • IProduct
    3、
    在DALFactory中,DataAccess负责各个接口对象的创建:
     public sealed class DataAccess
     {
           public static PetShop.IDAL.ICategory CreateCategory() {}
    
            public static PetShop.IDAL.IInventory CreateInventory() {}
                
            public static PetShop.IDAL.IItem CreateItem() {}
                
            public static PetShop.IDAL.IOrder CreateOrder() {}
    
            public static PetShop.IDAL.IProduct CreateProduct() {}            
    }
    4、
    3. Strategy模式返回顶部
    1、Strategy模式
    2、根据具体情况,PetShop在插入订单的时候,有两种方式:同步和异步。采用哪种方式,是由用户定制的,也就是说,插入订单的策略是随时发生变化的
    3、
    4. Facade模式返回顶部
    1、

    Facade模式

    • Facade的意思就是包装的外面,或者说是“门面”,也就是说我们可以对一些复杂的逻辑进行包装,使调用者更加方便快捷的调用。
    • Facade的表现如图所示:

             

    2、
    • 在PetShop中,需要对数据表实现Cache。这些Cache都存放在.Net为Web系统提供的Cache集合对象System.Web.Caching.AggregateCacheDependency中
    • protected AggregateCacheDependency dependency = new AggregateCacheDependency();
    • dependency.Add(new SqlCacheDependency(dbName, tableName);
    3、
    为了方便的创建各自数据表的CacheDependcy,PetShop提供了工厂类DependencyAccess:
    public static class DependencyAccess 
     {
            public static IPetShopCacheDependency CreateCategoryDependency() {}
            
            public static IPetShopCacheDependency  CreateProductDependency() {}
    
            public static IPetShopCacheDependency CreateItemDependency() {}
     }
    4、
    5、

    然而对于调用者而言,并不是要获得IPetShopCacheDependency对象,而是存放了正确的Table Name的SqlCacheDependency对象的集合AggregateCacheDependency
    当然,我们可以在创建了IPetShopCacheDependency对象后,调用GetDependency()方法来获得。为了方便调用者,就利用了Façade模式,建立了DependencyFacade类,在工厂类的基础上作了进一步的包装。(见代码)

    6、
    5.返回顶部
     
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    python 可迭代对象与迭代器
    linux与linux远程桌面
    get return value of python in shell
    python反汇编函数字节码
    celery.backends.base.NotRegistered.
    supervisor process management
    Kafka的Log存储解析
    kafka config
    Chanel
    PowerPoint的公式
  • 原文地址:https://www.cnblogs.com/storebook/p/12669745.html
Copyright © 2011-2022 走看看