乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
生活随笔
收集整理的這篇文章主要介紹了
乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[索引頁]
[源碼下載]
樂在其中設計模式(C#) - 適配器模式(Adapter Pattern)
作者:webabcd
介紹
將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
示例
有一個Message實體類,某個類對它的操作有Insert()和Get()方法。現在需要把這個類轉到另一個接口,分別對應Add()和Select()方法。 MessageModel using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?Message實體類?
????????/// </summary>?
????????public?class?MessageModel?
????????{?
????????????????/// <summary>?
????????????????///?構造函數?
????????????????/// </summary>?
????????????????/// <param name="msg">Message內容</param>?
????????????????/// <param name="pt">Message發布時間</param>?
????????????????public?MessageModel(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; }?
????????????????}?
????????}?
} SqlMessage using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?源(Adaptee)角色?
????????///?Sql方式操作Message?
????????/// </summary>?
????????public?class?SqlMessage?
????????{?
????????????????/// <summary>?
????????????????///?獲取Message?
????????????????/// </summary>?
????????????????/// <returns></returns>?
????????????????public?List<MessageModel> Get()?
????????????????{?
????????????????????????List<MessageModel> l =?new?List<MessageModel>();?
????????????????????????l.Add(new?MessageModel("SQL方式獲取Message", DateTime.Now));?
?
????????????????????????return?l;?
????????????????}?
?
????????????????/// <summary>?
????????????????///?插入Message?
????????????????/// </summary>?
????????????????/// <param name="mm">Message實體對象</param>?
????????????????/// <returns></returns>?
????????????????public?bool?Insert(MessageModel mm)?
????????????????{?
????????????????????????// 代碼略?
????????????????????????return?true;?
????????????????}?
????????}?
} IMessage using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?目標(Target)角色?
????????///?操作Message的接口?
????????/// </summary>?
????????public?interface?IMessage?
????????{?
????????????????/// <summary>?
????????????????///?獲取Message?
????????????????/// </summary>?
????????????????/// <returns></returns>?
????????????????List<MessageModel> Select();?
?
????????????????/// <summary>?
????????????????///?插入Message?
????????????????/// </summary>?
????????????????/// <param name="mm">Message實體對象</param>?
????????????????/// <returns></returns>?
????????????????bool?Add(MessageModel mm);?
????????}?
} Message using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?適配器(Adapter)角色?
????????///?類適配器?
????????///?把源適配到這個類?
????????/// </summary>?
????????public?class?Message : SqlMessage, IMessage?
????????{?
????????????????/// <summary>?
????????????????///?獲取Message?
????????????????/// </summary>?
????????????????/// <returns></returns>?
????????????????public?List<MessageModel> Select()?
????????????????{?
????????????????????????return?base.Get();?
????????????????}?
?
????????????????/// <summary>?
????????????????///?插入Message?
????????????????/// </summary>?
????????????????/// <param name="mm">Message實體對象</param>?
????????????????/// <returns></returns>?
????????????????public?bool?Add(MessageModel mm)?
????????????????{?
????????????????????????return?base.Insert(mm);?
????????????????}?
????????}?
} Message2 using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?適配器(Adapter)角色?
????????///?對象適配器?
????????///?把源適配到這個類?
????????/// </summary>?
????????public?class?Message2 : IMessage?
????????{?
????????????????private?SqlMessage _sqlMessage;?
?
????????????????/// <summary>?
????????????????///?構造函數?
????????????????/// </summary>?
????????????????public?Message2()?
????????????????{?
????????????????????????_sqlMessage =?new?SqlMessage();?
????????????????}?
?
????????????????/// <summary>?
????????????????///?獲取Message?
????????????????/// </summary>?
????????????????/// <returns></returns>?
????????????????public?List<MessageModel> Select()?
????????????????{?
????????????????????????return?_sqlMessage.Get();?
????????????????}?
?
????????????????/// <summary>?
????????????????///?插入Message?
????????????????/// </summary>?
????????????????/// <param name="mm">Message實體對象</param>?
????????????????/// <returns></returns>?
????????????????public?bool?Add(MessageModel mm)?
????????????????{?
????????????????????????return?_sqlMessage.Insert(mm);?
????????????????}?
????????}?
} 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.Adapter;?
?
public?partial?class?Adapter : System.Web.UI.Page?
{?
????????protected?void?Page_Load(object?sender, EventArgs e)?
????????{?
????????????????IMessage m;?
?
????????????????m =?new?Message();?
????????????????Response.Write("類適配器方式<br />");?
????????????????Response.Write(m.Add(new?MessageModel("插入", DateTime.Now)));?
????????????????Response.Write("<br />");?
????????????????Response.Write(m.Select()[0].Message +?" "?+ m.Select()[0].PublishTime.ToString());?
????????????????Response.Write("<br /><br />");?
?
????????????????m =?new?Message2();?
????????????????Response.Write("對象適配器方式<br />");?
????????????????Response.Write(m.Add(new?MessageModel("插入", DateTime.Now)));?
????????????????Response.Write("<br />");?
????????????????Response.Write(m.Select()[0].Message +?" "?+ m.Select()[0].PublishTime.ToString());?
????????????????Response.Write("<br />");?
????????}?
} 運行結果
類適配器方式
True
SQL方式獲取Message 2007-4-8 20:59:29?
對象適配器方式
True
SQL方式獲取Message 2007-4-8 20:59:29
參考
http://www.dofactory.com/Patterns/PatternAdapter.aspx
OK
[源碼下載]
本文轉自webabcd 51CTO博客,原文鏈接:http://blog.51cto.com/webabcd/344517,如需轉載請自行聯系原作者
[源碼下載]
樂在其中設計模式(C#) - 適配器模式(Adapter Pattern)
作者:webabcd
介紹
將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
示例
有一個Message實體類,某個類對它的操作有Insert()和Get()方法。現在需要把這個類轉到另一個接口,分別對應Add()和Select()方法。 MessageModel using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?Message實體類?
????????/// </summary>?
????????public?class?MessageModel?
????????{?
????????????????/// <summary>?
????????????????///?構造函數?
????????????????/// </summary>?
????????????????/// <param name="msg">Message內容</param>?
????????????????/// <param name="pt">Message發布時間</param>?
????????????????public?MessageModel(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; }?
????????????????}?
????????}?
} SqlMessage using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?源(Adaptee)角色?
????????///?Sql方式操作Message?
????????/// </summary>?
????????public?class?SqlMessage?
????????{?
????????????????/// <summary>?
????????????????///?獲取Message?
????????????????/// </summary>?
????????????????/// <returns></returns>?
????????????????public?List<MessageModel> Get()?
????????????????{?
????????????????????????List<MessageModel> l =?new?List<MessageModel>();?
????????????????????????l.Add(new?MessageModel("SQL方式獲取Message", DateTime.Now));?
?
????????????????????????return?l;?
????????????????}?
?
????????????????/// <summary>?
????????????????///?插入Message?
????????????????/// </summary>?
????????????????/// <param name="mm">Message實體對象</param>?
????????????????/// <returns></returns>?
????????????????public?bool?Insert(MessageModel mm)?
????????????????{?
????????????????????????// 代碼略?
????????????????????????return?true;?
????????????????}?
????????}?
} IMessage using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?目標(Target)角色?
????????///?操作Message的接口?
????????/// </summary>?
????????public?interface?IMessage?
????????{?
????????????????/// <summary>?
????????????????///?獲取Message?
????????????????/// </summary>?
????????????????/// <returns></returns>?
????????????????List<MessageModel> Select();?
?
????????????????/// <summary>?
????????????????///?插入Message?
????????????????/// </summary>?
????????????????/// <param name="mm">Message實體對象</param>?
????????????????/// <returns></returns>?
????????????????bool?Add(MessageModel mm);?
????????}?
} Message using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?適配器(Adapter)角色?
????????///?類適配器?
????????///?把源適配到這個類?
????????/// </summary>?
????????public?class?Message : SqlMessage, IMessage?
????????{?
????????????????/// <summary>?
????????????????///?獲取Message?
????????????????/// </summary>?
????????????????/// <returns></returns>?
????????????????public?List<MessageModel> Select()?
????????????????{?
????????????????????????return?base.Get();?
????????????????}?
?
????????????????/// <summary>?
????????????????///?插入Message?
????????????????/// </summary>?
????????????????/// <param name="mm">Message實體對象</param>?
????????????????/// <returns></returns>?
????????????????public?bool?Add(MessageModel mm)?
????????????????{?
????????????????????????return?base.Insert(mm);?
????????????????}?
????????}?
} Message2 using?System;?
using?System.Collections.Generic;?
using?System.Text;?
?
namespace?Pattern.Adapter?
{?
????????/// <summary>?
????????///?適配器(Adapter)角色?
????????///?對象適配器?
????????///?把源適配到這個類?
????????/// </summary>?
????????public?class?Message2 : IMessage?
????????{?
????????????????private?SqlMessage _sqlMessage;?
?
????????????????/// <summary>?
????????????????///?構造函數?
????????????????/// </summary>?
????????????????public?Message2()?
????????????????{?
????????????????????????_sqlMessage =?new?SqlMessage();?
????????????????}?
?
????????????????/// <summary>?
????????????????///?獲取Message?
????????????????/// </summary>?
????????????????/// <returns></returns>?
????????????????public?List<MessageModel> Select()?
????????????????{?
????????????????????????return?_sqlMessage.Get();?
????????????????}?
?
????????????????/// <summary>?
????????????????///?插入Message?
????????????????/// </summary>?
????????????????/// <param name="mm">Message實體對象</param>?
????????????????/// <returns></returns>?
????????????????public?bool?Add(MessageModel mm)?
????????????????{?
????????????????????????return?_sqlMessage.Insert(mm);?
????????????????}?
????????}?
} 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.Adapter;?
?
public?partial?class?Adapter : System.Web.UI.Page?
{?
????????protected?void?Page_Load(object?sender, EventArgs e)?
????????{?
????????????????IMessage m;?
?
????????????????m =?new?Message();?
????????????????Response.Write("類適配器方式<br />");?
????????????????Response.Write(m.Add(new?MessageModel("插入", DateTime.Now)));?
????????????????Response.Write("<br />");?
????????????????Response.Write(m.Select()[0].Message +?" "?+ m.Select()[0].PublishTime.ToString());?
????????????????Response.Write("<br /><br />");?
?
????????????????m =?new?Message2();?
????????????????Response.Write("對象適配器方式<br />");?
????????????????Response.Write(m.Add(new?MessageModel("插入", DateTime.Now)));?
????????????????Response.Write("<br />");?
????????????????Response.Write(m.Select()[0].Message +?" "?+ m.Select()[0].PublishTime.ToString());?
????????????????Response.Write("<br />");?
????????}?
} 運行結果
類適配器方式
True
SQL方式獲取Message 2007-4-8 20:59:29?
對象適配器方式
True
SQL方式獲取Message 2007-4-8 20:59:29
參考
http://www.dofactory.com/Patterns/PatternAdapter.aspx
OK
[源碼下載]
本文轉自webabcd 51CTO博客,原文鏈接:http://blog.51cto.com/webabcd/344517,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql dba系统学习(1)mysq
- 下一篇: Android-JNINDK(一)入门