设计模式 - Abstract Factory Pattern(抽象工厂模式)

设计模式 - Abstract Factory Pattern(抽象工厂模式)  

[源码下载]
设计模式 - Abstract Factory Pattern(抽象工厂模式)
作者: webabcd 介绍 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 示例 有Message和MessageModel,Message有一个Insert()方法,该方法的参数是MessageModel。 AbstractMessageModel
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// 抽象Message实体类(AbstractProduct)     /// </summary>     public abstract class AbstractMessageModel     {         /// <summary>         /// 构造函数         /// </summary>         public AbstractMessageModel()         {         }         /// <summary>         /// 构造函数         /// </summary>         /// <param name="msg">Message内容</param>         /// <param name="pt">Message发布时间</param>         public AbstractMessageModel(string msg, DateTime pt)         {             this._message = msg;             this._publishTime = pt;         }         private string _message;         /// <summary>         /// Message内容         /// </summary>         public string Message         {             get return _message; }             set { _message = value; }         }         private DateTime _publishTime;         /// <summary>         /// Message发布时间         /// </summary>         public DateTime PublishTime         {             get return _publishTime; }             set { _publishTime = value; }         }         /// <summary>         /// UserId         /// </summary>         public abstract string UserId         {             get;             set;         }     } }
SqlMessageModel
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// SqlMessage实体类(Product)     /// </summary>     public class SqlMessageModel : AbstractMessageModel     {         /// <summary>         /// 构造函数         /// </summary>         public SqlMessageModel()             : base()         {         }         /// <summary>         /// 构造函数         /// </summary>         /// <param name="userId">UserId</param>         /// <param name="msg">Message内容</param>         /// <param name="pt">Message发布时间</param>         public SqlMessageModel(string userId, string msg, DateTime pt)             : base(msg, pt)         {             this._userId = userId;         }         private string _userId;         /// <summary>         /// Message内容         /// </summary>         public override string UserId         {             get return _userId; }             set { _userId = value; }         }     } }
XmlMessageModel
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// XmlMessage实体类(Product)     /// </summary>     public class XmlMessageModel : AbstractMessageModel     {         /// <summary>         /// 构造函数         /// </summary>         public XmlMessageModel()             : base()         {         }         /// <summary>         /// 构造函数         /// </summary>         /// <param name="userId">UserId</param>         /// <param name="msg">Message内容</param>         /// <param name="pt">Message发布时间</param>         public XmlMessageModel(string userId, string msg, DateTime pt)             : base (msg, pt)         {             this._userId = userId;         }         private string _userId;         /// <summary>         /// Message内容         /// </summary>         public override string UserId         {             // 解密算法后的值             get return _userId; }              // 加密算法后的值             set { _userId = value; }         }     } }
AbstractMessage
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// 操作Message抽象类(AbstractProduct)     /// </summary>     public abstract class AbstractMessage     {         /// <summary>         /// 插入Message         /// </summary>         /// <param name="amm">AbstractMessageModel</param>         /// <returns></returns>         public abstract string Insert(AbstractMessageModel amm);     } }
SqlMessage
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// Sql方式操作Message类(Product)     /// </summary>     public class SqlMessage : AbstractMessage     {         /// <summary>         /// 插入Message         /// </summary>         /// <param name="amm">AbstractMessageModel</param>         /// <returns></returns>         public override string Insert(AbstractMessageModel amm)         {             return "Sql方式插入Message。帐号:" + amm.UserId                  + ";内容:" + amm.Message                  + ";时间:" + amm.PublishTime.ToString();         }     } }
XmlMessage
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// Xml方式操作Message类(Product)     /// </summary>     public class XmlMessage : AbstractMessage     {         /// <summary>         /// 插入Message         /// </summary>         /// <param name="amm">AbstractMessageModel</param>         /// <returns></returns>         public override string Insert(AbstractMessageModel amm)         {             return "Xml方式插入Message。帐号:" + amm.UserId                 + ";内容:" + amm.Message                 + ";时间:" + amm.PublishTime.ToString();         }     } }
AbstractMessageFactory
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// 抽象Message工厂(AbstractFactory)     /// </summary>     public abstract class AbstractMessageFactory     {         /// <summary>         /// 创建MessageModel对象         /// </summary>         /// <returns></returns>         public abstract AbstractMessageModel CreateMessageModel();         /// <summary>         /// 创建Message对象         /// </summary>         /// <returns></returns>         public abstract AbstractMessage CreateMessage();     } }
SqlMessageFactory
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// SqlMessage工厂(ConcreteFactory)     /// </summary>     public class SqlMessageFactory : AbstractMessageFactory     {         /// <summary>         /// 创建SqlMessageModel对象         /// </summary>         /// <returns></returns>         public override AbstractMessageModel CreateMessageModel()         {             return new SqlMessageModel();         }         /// <summary>         /// 创建SqlMessage对象         /// </summary>         /// <returns></returns>         public override AbstractMessage CreateMessage()         {             return new SqlMessage();         }     } }
XmlMessageFactory
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// XmlMessage工厂(ConcreteFactory)     /// </summary>     public class XmlMessageFactory : AbstractMessageFactory     {         /// <summary>         /// 创建XmlMessageModel对象         /// </summary>         /// <returns></returns>         public override AbstractMessageModel CreateMessageModel()         {             return new XmlMessageModel();         }         /// <summary>         /// 创建XmlMessage对象         /// </summary>         /// <returns></returns>         public override AbstractMessage CreateMessage()         {             return new XmlMessage();         }     } }
Message
using  System; using  System.Collections.Generic; using  System.Text; namespace  Pattern.AbstractFactory {     /// <summary>     /// Context类     /// </summary>     public class Message     {         private AbstractMessage _insertMessage;         private AbstractMessageModel _messageModel;         /// <summary>         /// 构造函数         /// </summary>         /// <param name="factory">AbstractMessageFactory</param>         public Message(AbstractMessageFactory factory)         {             DateTime pt = DateTime.Now;             _insertMessage = factory.CreateMessage();             _messageModel = factory.CreateMessageModel();         }         /// <summary>         /// 插入Message         /// </summary>         /// <param name="userId">UserId</param>         /// <param name="msg">Message内容</param>         /// <param name="pt">Message发布时间</param>         /// <returns></returns>         public string Insert(string userId, string msg, DateTime pt)         {             _messageModel.UserId = userId;             _messageModel.Message = msg;             _messageModel.PublishTime = pt;             return _insertMessage.Insert(_messageModel);         }     } }
client
using  System; using  System.Data; using  System.Configuration; using  System.Collections; using  System.Web; using  System.Web.Security; using  System.Web.UI; using  System.Web.UI.WebControls; using  System.Web.UI.WebControls.WebParts; using  System.Web.UI.HtmlControls; using  Pattern.AbstractFactory; public  partial  class  AbstractFactory : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         AbstractMessageFactory amf = new SqlMessageFactory();         AbstractMessageModel amm = new SqlMessageModel();         Message m = new Message(amf);         Response.Write(m.Insert("admin""Sql方式", DateTime.Now));         Response.Write("<br />");         amf = new XmlMessageFactory();         amm = new XmlMessageModel();         m = new Message(amf);         Response.Write(m.Insert("user""Xml方式", DateTime.Now));     } }
运行结果 Sql方式插入Message。帐号:admin;内容:Sql方式;时间:2007-5-3 22:04:56 Xml方式插入Message。帐号:user;内容:Xml方式;时间:2007-5-3 22:04:56 OK [源码下载]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值