webabcd - 专注于asp.net
ASP.NET
从现在开始 一切都不晚
posts - 149, comments - 4168, trackbacks - 344, articles - 0
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
Posted on 2007-05-03 22:08
webabcd
阅读(3703)
评论(26)
编辑
收藏
所属分类:
DesignPattern设计模式
[索引页]
[源码下载]
乐在其中设计模式(C#) - 抽象工厂模式(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