知识大全 petshop4体现的面向接口编程思想
Posted 知
篇首语:总有一些人路过你的人生,微不足道又无比重要。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 petshop4体现的面向接口编程思想相关的知识,希望对你有一定的参考价值。
petshop 充分体现了面向接口编程的思想 就是给你一个接口你别管我是怎么实现的 你只管用别说其他的 namespace PetShop BLL /// <summary> /// A business ponent to manage products /// </summary> public class Product // Get an instance of the Product DAL using the DALFactory // Making this static will cache the DAL instance after the initial load private static readonly IProduct dal = PetShop DALFactory DataAccess CreateProduct();
在bll层 这里使用创建Produce的接口 你只管调用他的方法
namespace PetShop IDAL /// <summary> /// Interface for the Product DAL /// </summary>
public interface IProduct /// <summary> /// Method to search products by category name /// </summary> /// <param name= category >Name of the category to search by</param> /// <returns>Interface to Model Collection Generic of search results</returns> IList<ProductInfo> GetProductsByCategory(string category); /// <summary> /// Method to search products by a set of keyword /// </summary> /// <param name= keywords >An array of keywords to search by</param> /// <returns>Interface to Model Collection Generic of search results</returns> IList<ProductInfo> GetProductsBySearch(string[] keywords); /// <summary> /// Query for a product /// </summary> /// <param name= productId >Product Id</param> /// <returns>Interface to Model ProductInfo for requested product</returns> ProductInfo GetProduct(string productId);
这里是定义了Product接口和他的虚方法 namespace PetShop SQLServerDAL public class Product : IProduct //Static constants private const string SQL_SELECT_PRODUCTS_BY_CATEGORY = SELECT Product ProductId Product Name Product Descn Product Image Product CategoryId FROM Product WHERE Product CategoryId = @Category ; private const string SQL_SELECT_PRODUCTS_BY_SEARCH = SELECT ProductId Name Descn Product Image Product CategoryId FROM Product WHERE (( ; private const string SQL_SELECT_PRODUCTS_BY_SEARCH = LOWER(Name) LIKE % + + % OR LOWER(CategoryId) LIKE % + + % ; private const string SQL_SELECT_PRODUCTS_BY_SEARCH = ) OR ( ; private const string SQL_SELECT_PRODUCTS_BY_SEARCH = )) ; private const string SQL_SELECT_PRODUCT = SELECT Product ProductId Product Name Product Descn Product Image Product CategoryId FROM Product WHERE Product ProductId = @ProductId ; private const string PARM_CATEGORY = @Category ; private const string PARM_KEYWORD = @Keyword ; private const string Parm_PRODUCTID = @ProductId ; /// <summary> /// Query for products by category /// </summary> /// <param name= category >category name</param> /// <returns>A Generic List of ProductInfo</returns> public IList<ProductInfo> GetProductsByCategory(string category) IList<ProductInfo> productsByCategory = new List<ProductInfo>();
这里是实现Product接口的类 namespace PetShop DALFactory /// <summary> /// This class is implemented following the Abstract Factory pattern to create the DAL implementation /// specified from the configuration file /// </summary> public sealed class DataAccess // Look up the DAL implementation we should be using private static readonly string path = ConfigurationManager AppSettings[ WebDAL ]; private static readonly string orderPath = ConfigurationManager AppSettings[ OrdersDAL ]; private DataAccess() public static PetShop IDAL ICategory CreateCategory() string className = path + Category ; return (PetShop IDAL ICategory)Assembly Load(path) CreateInstance(className);
这里是利用工厂模式来映射你需要你想创建哪一个
后面还有一些消息队列MSMQMessage利用cache缓存以后达到异步处理购物车里订单的功能!
cha138/Article/program/net/201311/11385相关参考