天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

系統(tǒng)架構技能之設計模式—橋接模式

  一、上篇回顧

  上篇我們講述了比較常用的適配器模式,并且分析了適配器的一般使用場景:

       1、我們在使用第三方的類庫,或者說第三方的API的時候,我們通過適配器轉換來滿足現有系統(tǒng)的使用需求。

       2、我們的舊系統(tǒng)與新系統(tǒng)進行集成的時候,我們發(fā)現舊系統(tǒng)的數據無法滿足新系統(tǒng)的需求,那么這個時候,我們可能需要適配器,完成調用需求。

       3、我們在使用不同數據庫之間進行數據同步。(我這里只是分析的是通過程序來說實現的時候的情況。還有其他的很多種方式[數據庫同步])。

  并且講述了對象適配器和類適配器的區(qū)別:

  對象適配器:不是通過繼承的方式,而是通過對象組合的方式來進行處理的,我們只要學過OO的設計原則的都知道,組合相比繼承是推薦的方式。

  類適配器:通過繼承的方式來實現,將舊系統(tǒng)的方法進行封裝。對象適配器在進行適配器之間的轉換過程中,無疑類適配器也能完成,但是依賴性會加大,并且隨著適配要求的靈活性,可能通過繼承膨脹的難以控制。

  并且由于C#中不支持多繼承,以至于限制我們的繼承的策略。而對象組合的方式則不會有太多的限制。

  我們在上篇中還講述了適配器之間的轉配,但是沒有給出一個示例代碼:

  我們這里給出適配器之間相互轉換的情況,有的時候,我們發(fā)現2個適配器之間也需要進行相應的轉配,例如我們上面的數據庫和XML文件的查詢接口,例如有的時候,我需要把XML文件的數據轉換到數據庫中,或者把數據庫中的數據保存成XML形式,這個時候,我們就需要定義一個對象,來完成相應的適配器之間的適配。   image  針對上面的說明,我們這里給出代碼的核心部分:

舊系統(tǒng)的查詢服務:
public interface IQuery
{
object Query();
}
public class DbQuery : IQuery
{
public object Query()
{
throw new NotImplementedException();
}
}
public class XMLQuery : IQuery
{
public object Query()
{
throw new NotImplementedException();
}
}
舊系統(tǒng)的持久化服務:
public interface ISave
{
bool Save(object obj);
}
public class XMLSave : ISave
{
public bool Save(object obj)
{
throw new NotImplementedException();
}
}
public class DbSave : ISave
{
public bool Save(object obj)
{
throw new NotImplementedException();
}
}
新系統(tǒng)適配器持久化接口:
public interface IPersistence
{
bool Persistence(object obj);
}
public class XMLPersistenceAdapter : IPersistence
{
XMLSave save
= new XMLSave();

public bool Persistence(object obj)
{
return save.Save(obj);
}
}
public class DbPersistenceAdapter : IPersistence
{
DbSave save
= new DbSave();

public bool Persistence(object obj)
{
return save.Save(obj);
}
}
系統(tǒng)查詢服務適配器:
ublic
interface ISelect
object GetList();
public class XMLQueryAdapter : ISelect
{
private XMLQuery query = new XMLQuery();
public object GetList()
{
return query.Query();
}
}
public class DbQueryAdapter : ISelect
{
private DbQuery query = new DbQuery();
public object GetList()
{
return query.Query();
}
}
適配器之間的轉配器:
public interface IAdapterToAdapter
{
object GetData();

bool SaveData();
}

通用的轉配器實現方案:
public class ConvertAdapter : IAdapterToAdapter
{
private Dictionary<string, AdapterSetting> settings = new Dictionary<string, AdapterSetting>();
public ConvertAdapter()
{
//從配置文件中讀取要轉換的適配器節(jié)點指點的關系,并且配置要調用的方法
settings.Add("", new AdapterSetting());
}

public object GetData()
{
return settings[""].AdapterName.Query();
}

public bool SaveData()
{
return settings[""].ToAdapterName.Persistence(this.GetData());
}
}

it知識庫系統(tǒng)架構技能之設計模式—橋接模式,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 抽插性奴中出乳精内射 | 免费观看成人毛片 | 俄罗斯粗大猛烈18P 俄罗斯雏妓的BBB孩交 | 国产对白精品刺激一区二区 | 欧美精品一区二区三区视频 | 久久中文骚妇内射 | 阿娇和冠希13分钟在线观看 | 日韩少妇爆乳无码专区 | 快播dvd吧| 人体内射精一区二区三区 | 亚洲精品久久无码AV片银杏 | 欧美特级特黄a大片免费 | 性女传奇 快播 | 亚洲免费精品视频 | 美女张开腿让男生桶动态图 | 香蕉在线播放 | 日本乱子伦一区二区三区 | 国产精品人妻一区免费看8C0M | 日韩 亚洲 欧美 中文 高清 | 男人J放进女人P全黄网站 | 国产AV午夜精品一区二区入口 | yellow在线观看免费直播 | 云南14学生真实初次破初视频 | 视频一区亚洲中文字幕 | 国产久青青青青在线观看 | 最新亚洲人成网站在线影院 | 狠狠色狠狠色88综合日日91 | 97无码人妻精品1国产精东影业 | 成人区精品一区二区不卡AV免费 | 亚洲色视在线观看视频 | videos gratis欧美另类 | 免费在线伦理片 | 久久久擼擼擼麻豆 | 国产私拍福利精品视频 | 国产精品97久久AV麻豆 | TUBE19UP老师学生 | 国产嫩草在线观看 | 嫩草www视频在线观看高清 | 日产精品久久久久久久蜜殿 | 国产乱辈通伦影片在线播放亚洲 | 网址在线观看你懂我意思吧免费的 |