舉乙個常用的例子,比如程式的資料庫訪問層能夠同時支援,sqlserver, oracle等多種資料庫。這樣,在例項化ado.net物件和具體操作時候,就要走不同的分支。乙個是sql server的,乙個是oracle的。 這時候,就需要不同的條件(可以是後台設定的使用sql or oracle or ...),例項化不同資料庫訪問類的物件。
//介面預設public,加上public修飾符也不報錯
inte***ce iuserservice
public class sqluserservice:iuserservice
public bool i***ists()
}
public class oracleuserservice : iuserservice
public bool i***ists()
}
iuserservice userbll = null;
//根據不同條件,給介面實現不同的類的例項。
iconnectionstringstoragecontainer介面:
public inte***ce iconnectionstringstoragecontainer
具體實現類hashtableconnectionstringstoragecontainer,用於類庫專案:
}
呼叫的地方,根據條件不同,給介面例項化不同的類的物件,這裡寫在乙個單獨的類中:
public class connectionstringstoragefactory
return _connectionstringstoragecontainer;}}
這樣,當web專案呼叫的時候,例項化的是httpconnectionstringstoragecontainer類,
dal中例項化ef dbcontext資料庫上下文物件的時候,根據不同connectionstringstoragecontainer類:
public string getwellmeownedflagbygmpi(int? gmpi_id)
;using (var edw_ato = dalswitchdb.getedwatomiccontext())
return "n";}}
dalswitchdb:
/// /// this class contains switchdb methods
///
public class dalswitchdb
public static edw_atomicentities getedwatomiccontext()
基於介面訪問與基於介面實現類訪問
在基於物件模型特別是com物件的應用開發中,我們一般是定義了相當多的介面,及圍繞介面相當多的實現類。這裡涉及到對相關介面的訪問,訪問是基於介面指標訪問還是基於介面實現類的訪問,這兩者是有不同的。基於介面訪問,那麼只能呼叫介面的方法,對於實現部分其它的方法的呼叫是無能為力的。基於實現類的訪問,可以呼叫...
基於Linux的QoS程式設計介面研究與分析(1)
第一章緒論 1.1什麼是linux linux是一套免費使用和自由傳播的類unix作業系統,它主要用於基於intel x86系列cpu的計算機上。這個系統是由全世界各地的成千上萬的程式設計師設計和實現的。其目的是建立不受任何商品化軟體的版權制約的 全世界都能自由使用的unix相容產品。linux的出...
基於Linux的QoS程式設計介面研究與分析(5)
2.2 sbm 子網頻寬管理 qos只能保證和最弱的鏈路一樣的通訊質量。qos懥磼是傳送端和接收端間的端到端,這就表明沿著路由的每乙個路由器一定要支援現在使用的qos技術。然而,qos懥磼由頂至底也是要從下面兩個方面認真考慮的 傳送端和接收端主機必須支援qos 使得應用和系統能獲得明顯或不明顯的好處...