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

  • 相关阅读:
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    Java学习哈希表2
    Java学习哈希表1
  • 原文地址:https://www.cnblogs.com/insus/p/2941880.html
Copyright © 2011-2022 走看看