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();        }    }}

MVC基础知识 – 1.抽象工厂模式的更多相关文章

  1. java设计模式(三)--抽象工厂模式

    转载:http://zz563143188.iteye.com/blog/1847029 前面的工厂方法模式虽然清晰,但还是感觉有些繁琐,通常使用的还是抽象工厂模式. 工厂方法模式有一个问题就是,类的 ...

  2. .NET抽象工厂模式微理解--教你在项目中实现抽象工厂

    .NET抽象工厂模式微理解--教你在项目中实现抽象工厂 最近在学习MVC,对于MVC里面的一些项目上的东西都和抽象模式有关,今天就微说明一下个人对于抽象工厂模式的理解,以方便学习MVC及工厂模式相关的 ...

  3. 抽象工厂模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操 ...

  4. 大话设计模式C++版——抽象工厂模式

    前面说过,简单工厂模式是最基础的一种设计模式,那以工厂命名的设计模式就是23种设计模式中最多的一种,他们一脉相承,一步一步进化而来,这里就是其中的最后一种——抽象工厂模式(Abstract Facto ...

  5. php抽象工厂模式的研究

    上一节理解了工厂模式.其代码原理如下: <?php abstract class ApptEncoder{ abstract function encode(); } class BloggsA ...

  6. 抽象工厂模式和autofac的使用总结

    抽象工厂模式和依赖注入的使用目的都是降低对象直接依赖耦合关系,应该说依赖注入是抽象工厂模式的一种升华,功能更强大. 说到抽象工厂的模式,一般都要先解释下简单工厂,简单工厂就是将对象的实例化抽取出来形成 ...

  7. php设计模式之抽象工厂模式

    之前总结了一下工厂模式,其实准确地说是简单 工厂模式,在它的基础上再进行抽象就可以得到一种新的模式:抽象工厂模式. 专业一点的定义为: 抽象工厂模式(Abstact Factory)是一种常见的软件设 ...

  8. 再起航,我的学习笔记之JavaScript设计模式06(抽象工厂模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前两 ...

  9. C#学习笔记-抽象工厂模式

    题目1:数据访问,通过数据库对用户表单的进行访问,数据库包含SQL Server,对用户表单进行“新增用户”和“查询用户”信息等操作. 分析: 首先,确认用户表单,里面包含两个ID和Name两个字段, ...

随机推荐

  1. 跟我从零基础学习Unity3D开发--初识U3D

    首先声明,我也是才开始学,把自己学的记录下来也供一些想要学习的朋友参考,一起努力.希望大家能给我指点一下.切莫喷我. 什么是Unity3d呢? 百度百科------Unity是由Unity Techn ...

  2. One or more types required to compile a dynamic expression cannot be found.

    This is because dynamic keyword is a new C# keyword. So we need to import Microsoft.CSharp.dll. Here ...

  3. tomcat项目的部署

    当我们把web项目做好了以后,一般要进行部署,我一般采用两种方式来部署.一种是直接启动tomcat的startup.bat,一种是将tomcat做成服务. 1.第一种方法较为简单,先复制一份tomca ...

  4. appium踩过的坑(1):NoClassDefFoundError

    1.引入jar包错误导致的错误: 引入的jar包引起的 应该引入下面的jar包

  5. Java学习第一天

    Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html          nbtstat  ...

  6. java web统计当前访问用户数量

    1.使用SessionListener监听器,监听创建与销毁session的操作,利用计数方式记录当前session的数量

  7. Unity UGUI RectTransform图解

    UGUI RectTransform.Unity RectTransform详解 The first:look look API. http://docs.unity3d.com/ScriptRefe ...

  8. mappedBy reference an unknown target entity property解决方法

    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error ...

  9. Java-TCP Socket编程

    TCP 的 Java 支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP 协议族有 IP 协议.TCP 协议和 ...

  10. 二分查找和hash查找

    转载:http://blog.csdn.net/feixiaoxing/article/details/6844723 无论是数据库,还是普通的ERP系统,查找功能数据处理的一个基本功能.数据查找并不 ...