日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)

發布時間:2025/5/22 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 乐在其中设计模式(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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。