我对petshop4的简单理解![通俗易懂]

我对petshop4的简单理解![通俗易懂]petshop4充分体现了面向接口编程的思想,就是给你一个接口你别管我是怎么实现的,你只管用别说其他的。namespacePetShop.BLL{   ///   ///Abusinesscomponenttomanageproducts   ///   publicclassProduct{       //Getaninstan

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

petshop4充分体现了面向接口编程的思想,就是给你一个接口你别管我是怎么实现的,你只管用别说其他的。

namespace PetShop.BLL {

    /// <summary>     /// A business component 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_SEARCH1 = “SELECT ProductId, Name, Descn, Product.Image, Product.CategoryId FROM Product WHERE ((“;         private const string SQL_SELECT_PRODUCTS_BY_SEARCH2 = “LOWER(Name) LIKE ‘%’ + {0} + ‘%’ OR LOWER(CategoryId) LIKE ‘%’ + {0} + ‘%'”;         private const string SQL_SELECT_PRODUCTS_BY_SEARCH3 = “) OR (“;         private const string SQL_SELECT_PRODUCTS_BY_SEARCH4 = “))”;         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缓存以后达到异步处理购物车里订单的功能!

刚开始看应先从先从Product入口,关于Product的一些操作串联起来看一遍!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183808.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月31日 下午2:16
下一篇 2022年8月31日 下午2:36


相关推荐

  • SSDT详解

    SSDT详解本文对于 SSDT 的原理和作用进行细致入微的解释和说明 并且配以大量实例 相信您定会有所收获 什么是 SSDT 什么是 SSDT 自然 这个是我必须回答的问题 不过在此之前 请你打开命令行 cmd exe 窗口 并输入 dir 并回车 好了 列出了当前目录下的所有文件和子目录 那么 以程序员的视角来看 整个过程应该是这样的 由用户输入 dir 命令 cmd exe 获取用户输入

    2026年3月17日
    3
  • scp命令使用方法

    scp命令使用方法scp 命令是用于通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令 使用 SSH 意味着它享有与 SSH 相同级别的数据加密 因此被认为是跨两个远程主机传输文件的安全方式 基本语法下面提供了 SCP 命令的基本语法 scp option path to source fileuser server ip path to destination directory path to source file 这是打算复制到远程主机的源文件 u

    2026年3月19日
    2
  • 客户信息管理系统_销售找客户最好的app

    客户信息管理系统_销售找客户最好的app客户信息管理系统课程设计的题目及简介设计说明程序流图程序清单Customer类MainView类Tools类DataManager类调试结果课程设计体会课程设计的题目及简介客户信息管理系统,功能如下:(1)添加客户信息(2)修改客户信息(3)删除客户数据(4)查询客户列表(5)所有数据通过JDBC保存到MySql数据库中1,数据库名:cms_hisoft2,表名:users3,字段列表和类型:id,int,主键,自动增长name,varchar(20),姓名gender,var

    2022年10月17日
    4
  • KeyValuePair C#[通俗易懂]

    KeyValuePair C#[通俗易懂]前几天自学了keyvaluepair,在网上找到一篇很好的Blog,所以转载过来共享。转载地址:http://www.cnblogs.com/C#KeyValuePairKeyValuePairstorestwovaluestogether.Itisasinglegenericstruct.TheKeyValuePairtypeinSyste…

    2022年7月26日
    6
  • Anaconda 查看、创建、管理和使用python环境

    Anaconda 查看、创建、管理和使用python环境由于不同的项目需要用不同的python版本,于是使用Anaconda来进行版本管理,现记录一下经验:在官网下载并安装好Anaconda以后(非常简单,此处不赘述):1.查看Python环境condainfo–env可以看到所有python环境,前面有个‘*’的代表当前环境:2.创建Python环境condacreate–namepython35python=3.5代表创建一个…

    2022年5月6日
    77
  • Pandas笔记_python总结笔记

    Pandas笔记_python总结笔记创建数据随机数据创建一个Series,pandas可以生成一个默认的索引s=pd.Series([1,3,5,np.nan,6,8])通过numpy创建DataFrame,包含一个日期索引,以及标记的列dates=pd.date_range(‘20170101’,periods=6)df=pd.DataFrame(np.random.randn(6,…

    2022年8月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号