|
一、上篇回顧
通過上篇的簡單描述,我們知道了橋接模式主要是為了解決,一個對象的多個維度的變化因素的變化太快,難以控制的問題,我們通過將每個維度的變化因素進行抽象, 然后我們的對象只要依賴于抽象即可,具體的實現調用我們不關心,通過對象組合的方式,我們就能組合出我們想要的對象。無疑這是一種非常靈活的也是滿足設計模式的原則的,抽象和實現分離,使他們各自發生變化都不受對方的影響。而且我們也講述了,使用橋接模式的幾個典型的場景,現在我們的實際項目中就有這樣的問題,我也是在項目的使用過程中加深對橋接模式的理解的,橋接模式為系統在多個維度的變化的適應性方面提供了很好的參考,特別適合底層框架的開發過程中使用,可以適應不同變化因素的改變。上篇橋接模式放出后,我也得到了不少朋友的反饋,很感謝大家,這里特別的感謝一個名叫“蕭蕭”的朋友,他指出了我在文章中給出的例子有些不妥之處,我本篇將會對上篇中給出的例子,從給出符合橋接模式的實現,這里對大家say sorry !
上篇中的實現:
public interface IORM
{
ISave Save
{
get;
set;
}
IDelete Delete
{
get;
set;
}
ICreate Create
{
get;
set;
}
ICache Cache
{
get;
set;
}
IQuery Query
{
get;
set;
}
void Test();
}
我們在這個接口的定義中并沒有體現橋接模式中的變化因素的抽象的概念,我們修改為如下形式:
public interface IORM
{
ISave Save
{
get;
set;
}
IDelete Delete
{
get;
set;
}
ICreate Create
{
get;
set;
}
void Test();
}
public interface ICache
{
object Cache(object o);
}
public interface IQuery
{
object Query(string condition);
}
具體的緩存服務與查詢服務的實現:
public class Cache : ICache
{
public object Cache(object o){
return o;
}
}
public class Query: IQuery
{
public object Query(string condition){
return GetList(condition);
}
}
具體的ORM實現代碼如下:
public class ORM : IORM
{
private IQuery query=new Query();
private ICache cache=new Cache();
public ORM(IQuery query,ICache cache)
{
this.query=query;
this.cache=cache;
}
public ISave Save
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public IDelete Delete
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public ICreate Create
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public void Test()
{
///測試緩存對象!
this.cache.Cache(new object());
}
}
it知識庫:系統架構技能之設計模式—裝飾模式,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。