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.返回顶部 |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
来源:oschina
链接:https://my.oschina.net/u/4272135/blog/3227417