zoukankan      html  css  js  c++  java
  • 对数据库数据操作,工厂方法设计模式(Factory Method)

    在开发asp.net程序时,用户的数据将保存至数据库,程序与数据库之间的数据操作,会涉及到往数据库添加数据,编辑数据,更新数据和删除数据等。

    本次Insus.NET介绍的是工厂方法,因此我们会从这几个操作入手。介绍工厂方法设计模式,得先从简单工厂设计模式(Simple Factory)开始,
    简单工厂,有一个操作类,这个类有一个virtual方法,好让其它子类继承与重写:

    Operation
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for Operation
    /// </summary>
    namespace Insus.NET
    {
        public class Operation
        {
            public virtual void Processing()
            {
            
            }
        }
    }


    数据添加类:

    OperationAdd
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for OperationAdd
    /// </summary>
    namespace Insus.NET
    {
        public class OperationAdd : Operation
        {
            public override void Processing()
            {
                HttpContext.Current.Response.Write("数据添加操作。");
            }
        }
    }


    数据编辑类:

    OperationEdit
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for OperationEdit
    /// </summary>
    namespace Insus.NET
    {
        public class OperationEdit : Operation 
        {
            public override void Processing()
            {
                HttpContext.Current.Response.Write("数据编辑操作。");
            }
        }
    }


    数据更新类:

    OperationUpdate
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for OperationUpdate
    /// </summary>
    namespace Insus.NET
    {
        public class OperationUpdate : Operation 
        {
            public override void Processing()
            {
                HttpContext.Current.Response.Write("数据更新操作。");
            }
        }
    }


    数据删除类:

    OperationDelete
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for OperationDelete
    /// </summary>
    namespace Insus.NET
    {
        public class OperationDelete : Operation 
        {
            public override void Processing()
            {
                HttpContext.Current.Response.Write("数据删除操作。");
            }
        }
    }


    操作工厂类

    OperationFactory
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for OperationFactory
    /// </summary>
    namespace Insus.NET
    {
        public class OperationFactory
        {
            public static Operation CreateOperate(string operate)
            {
                Operation objOperation = null;
    
                switch (operate)
                { 
                    case "Add":
                        objOperation = new OperationAdd();
                        break;
                    case "Edit":
                        objOperation = new OperationEdit();
                        break;
                    case "Update":
                        objOperation = new OperationUpdate();
                        break;
                    case "Delete":
                        objOperation = new OperationDelete();
                        break;
                }
    
                return objOperation;
            }
        }
    }

    OK,简单工厂完成,我们可以由简单工厂设计模式(Simple Factory)演变为工厂方法设计模式(Factory Method)。 

    工厂方法设计模式,是定义一个用于创建对象的接口,让子类决定实例化哪一个类。

    首先创建一个工厂接口:

    IOperationFactory
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for IOperationFactory
    /// </summary>
    namespace Insus.NET
    {
        public interface IOperationFactory
        {
            Operation CreateOperation();
        }
    }


    下面分别是为添加,编辑,更新和删除各创建一个具体的工厂,并实现上面刚刚建好的工厂接口:
    添加工厂类:

    AddFactory
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for AddFactory
    /// </summary>
    namespace Insus.NET
    {
        public class AddFactory : IOperationFactory 
        {
            public Operation CreateOperation()
            {
              return new OperationAdd();
            }
        }
    }


    编辑工厂类:

    EditFactory
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for EditFactory
    /// </summary>
    namespace Insus.NET
    {
        public class EditFactory : IOperationFactory 
        {
            public Operation CreateOperation()
            {
                return new OperationEdit();
            }
        }
    }


    更新工厂类:

    UpdateFactory
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for UpdateFactory
    /// </summary>
    namespace Insus.NET
    {
        public class UpdateFactory : IOperationFactory 
        {
            public Operation CreateOperation()
            {
                return new OperationUpdate();
            }
        }
    }


    删除工厂方法:

    DeleteFactory
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for DeleteFactory
    /// </summary>
    namespace Insus.NET
    {
        public class DeleteFactory : IOperationFactory 
        {
            public Operation CreateOperation()
            {
                return new OperationDelete();
            }
        }
    }

     
    这样一来,工厂方法设计模式,就是去掉简单工厂设计模式的操作工厂类,在客户端应用此设计模式,直接实例需要的哪个操作工厂,如添加工厂类还是删除工厂类等:

    FactoryMethodDemo.aspx.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Insus.NET;
    
    public partial class FactoryMethodDemo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            IOperationFactory factory = new UpdateFactory();  //实例更新工厂类。
    
            Operation operation = factory.CreateOperation();
    
            operation.Processing();
        }
    }


     

     工厂方法设计模式源代码(.net 4.0):

     http://download.cnblogs.com/insus/CSharpNET/Insus_FactoryMethod.rar

  • 相关阅读:
    SQL Server Audit监控触发器状态
    SQL Server 数据变更时间戳(timestamp)在复制中的运用
    SQL Server 更改跟踪(Chang Tracking)监控表数据
    SQL Server 变更数据捕获(CDC)监控表数据
    SQL Server 事件通知(Event notifications)
    SQL Server 堆表行存储大小(Record Size)
    SQL Server DDL触发器运用
    SQL Server 默认跟踪(Default Trace)
    SQL Server 创建数据库邮件
    SQL Server 跨网段(跨机房)FTP复制
  • 原文地址:https://www.cnblogs.com/insus/p/2941880.html
Copyright © 2011-2022 走看看