1.调用规则

2.简单工厂

问题:在List.aspx里怎么new一个业务层?

2.1.再在 02SBLL 解决方案里建一个类库 BLL_Tow,也有一个 Users.cs

2.2.建立一个工厂

2.3.因为BLL和BLL_Tow里的Users.cs都实现了IBLL.IUser

2.4.因为只是硬编码写死的,运行时改变不了,所以应该把参数写到配置文件 web.config 里面

3.抽象工厂

1.调用规则

List.aspx

public partial class List : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        //1.读取数据,通过业务层(业务接口层)        IBLL.IUsers iblluser = null;        //2.调用业务接口 读取数据        List<Model.Users> list = iblluser.GetList();        //3.根据数据生成HTML代码        Response.Write(list.Count());    }}

2.简单工厂

问题:在List.aspx里怎么new一个业务层?

//1.读取数据,通过业务层(业务接口层)            IBLL.IUsers iblluser = null;

2.1.再在 02SBLL 解决方案里建一个类库BLL_Tow,也有一个Users.cs

2.2.建立一个工厂

根据问题,void的类型问题

2.3.因为BLL和BLL_Tow里的Users.cs都实现了IBLL.IUser

public class Users : IBLL.IUsers

所以

public class BLLAbsFactory{    //void 该是什么类型呢?    //如果是BLL.Users,    return new BLL_Tow.Users();就会报错    //反之,前面也会报错    //因为 BLL 和 BLL_Two 里 public class Users : IBLL.IUsers所以返回 IBLL.IUsers    public IBLL.IUsers GetBLLUser(string strType)    {        if (strType=="BLL")        {            return new BLL.Users();        }        else        {            return new BLL_Tow.Users();        }    }}

List.aspx就能实现抽象工厂模式

2.4.因为只是硬编码写死的,运行时改变不了,所以应该把参数写到配置文件 web.config 里面

BLLFactory/BLLAbsFactory.cs

List.aspx

3.抽象工厂

BLLFactory.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace BLLFactory{    /// <summary>    /// 业务抽象工厂    /// </summary>    public abstract class BLLFactory    {        /// <summary>        /// 根据配置文件 获取 实体业务工厂 对象        /// </summary>        /// <returns></returns>        public static BLLFactory GetFactory()        {            string strType = System.Configuration.ConfigurationManager.AppSettings["bllType"].ToString();            BLLFactory fac = null;            if (strType == "bll")            {                fac = new BLLFactory_A();            }            else if (strType == "bllTwo")            {                fac = new BLLFactory_Tow();            }            return fac;        }        public abstract IBLL.IUsers GetUsers();        public abstract IBLL.IMsg GetMsg();    }}

BLLFactory_A.cs

namespace BLLFactory{    /// <summary>    /// 负责生产业务 BLL 里的项目对象    /// </summary>    public class BLLFactory_A : BLLFactory    {        public override IBLL.IUsers GetUsers()        {            return new BLL.Users();        }

        public override IBLL.IMsg GetMsg()        {            return new BLL.Msg();        }    }}

BLLFactory_Tow.cs

namespace BLLFactory{    /// <summary>    /// 负责生产业务 BLL_Tow 里的项目对象    /// </summary>    /// <remarks></remarks>    public class BLLFactory_Tow : BLLFactory    {        public override IBLL.IUsers GetUsers()        {            return new  BLL_Tow.Users();        }

        public override IBLL.IMsg GetMsg()        {            return new BLL_Tow.Msg();        }    }}

新建一个web表示层

ListTow.aspx.cs

namespace Web{    public partial class ListTow : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            //通过抽象工厂的静态方法,读取配置文件,并获取一个实体工厂对象            BLLFactory.BLLFactory absBllFactory = BLLFactory.BLLFactory.GetFactory();

            //1.读取数据,通过业务层(业务接口层) --使用 抽象工厂 的方法获取一个 实体产品            IBLL.IUsers iblluser = absBllFactory.GetUsers();            //2.调用业务接口 读取数据  ---通过抽象产品 调用业务方法            List<Model.Users> list = iblluser.GetList();            //3.根据数据生成HTML代码            Response.Write(list.Count());

            IBLL.IMsg ibllMsg = absBllFactory.GetMsg(); //--使用 抽象工厂 的方法获取一个 实体产品            List<Model.Msg> listMsg = ibllMsg.GetMsgList();        }    }}

随机推荐

  1. windows 10专业版14393.447 64位纯净无广告版系统 基于官方稳定版1607制作 更新于20161112

    系统特点: 447更新日志(Win10 PC一周年更新正式版14393.447 32位/64位更新补丁KB3200970下载 Flash补丁Kb3202790下载): 1.通过网友的反馈,保留了Edg ...

  2. Java守护线程

    最近的项目使用的是dubbo.Web工程发布在Tomcat上,会作为消费者调用其他的dubbo微服务.但是最近发现一个问题,在使用shutdown命令关闭tomcat的时候,Tomcat并没有真正关闭 ...

  3. 怎样制作FL Studio步进音序器中的节奏

    了解了FL Studio一些操作功能后,我们就要去用这些操作功能完成我们想要的作品.所以今天小编就来带领大家在FL Studio的步进音序器中制作出简单的节奏,与此同时大家也会了解到通道的几个基础功能 ...

  4. CSS只是要点-收集

    1. CSS 浮动定位详解 请点击:css浮动定位详解

  5. Js中找任意对象的原型方法及改造原型

    Java中有运行时类型识别,js可以很方便的模仿这个特性,因为所有js对象都有一个属性constructor(构造器),表示这个对象的构造方法,原型与构造方法同名,所以可以通过这儿知道任意对象的原型名 ...

  6. ASP.Net中Session失效的一种编程思路

    在写一个客户的B/S结构应用程序时,突然发现一个技巧,不知道是否是MS的一个BUG,给相关的有研究的朋友原先考虑写一个检查Session的类,Session失效后,必须转向登陆页面,可每一个调用该类的 ...

  7. 什么是EBC和EBO

    EBC英文全称为“Empty Base Class”,中文全称“空基类”.那什么是空基类呢?简单的说就是没有任何数据成员的类就称之为空基类.也就是EBC的类定义中不包含任何数据成员,那么这样一来可能大 ...

  8. QBC用法

    方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge > ...

  9. Tomcat在eclipse中起动成功,主页却打不开

    症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问. 关闭eclipse里面的tomc ...

  10. 观察者模式学习--使用jdk的工具类简单实现

    观察者模式学习之二:使用jdk的自带的工具类实现,与自己实现相比,两者有以下的区别: 1,自己实现,需要定义观察者的接口类和目标对象的接口类.使用java util的工具类,则不需要自己定义观察者和目 ...