范例-项目-.NET-PetShop-4.0-架构设计:模式的应用

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

 

1. 模式的应用返回顶部

模式的应用

  • Factory模式
  • Strategy模式
  • Facade模式
2. Factory模式返回顶部
1、Factory模式
范例-项目-.NET-PetShop-4.0-架构设计:模式的应用_第1张图片
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模式
范例-项目-.NET-PetShop-4.0-架构设计:模式的应用_第2张图片
2、根据具体情况,PetShop 在插入订单的时候,有两种方式:同步和异步。采用哪种方式, 是由用户定制的,也就是说, 插入订单的策略是随时发生变化的
范例-项目-.NET-PetShop-4.0-架构设计:模式的应用_第3张图片
3、
4. Facade模式返回顶部
1、

Facade模式

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

        范例-项目-.NET-PetShop-4.0-架构设计:模式的应用_第4张图片 

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、
范例-项目-.NET-PetShop-4.0-架构设计:模式的应用_第5张图片
5、

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

6、
5.返回顶部
 
 
6.返回顶部
 
warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

你可能感兴趣的:(范例-项目-.NET-PetShop-4.0-架构设计:模式的应用)