
橋接(Bridge)
概念
橋接模式是一種結構型模式,概念是將原有物件的特徵或是行為再更進一步細分,藉此達成抽離物件行為的目的。
常見的狀況是原本透過一層一層繼承下來的物件會越來越肥,而此模式好處是可以將原本繼承下來的行為改成透過橋接的方式掛進去物件內,物件內需要呼叫共用的介面方法,而實體方法則由外部提供。
範例
//**************
//* author: cian
//* 20231024
//**************
/* 連線物件介面 */
interface IConnector
{
void Connect();
void Disconnect();
void WriteCmd(byte[] cmd);
}
class Ethernet : IConnector { /*Implement*/ }
class SerialPort : IConnector { /*Implement*/ }
/* 連線封包介面 */
interface IPacket
{
byte[] GetOpenCmd();
byte[] GetCloseCmd();
}
class EthernetPacket : IPacket { /*Implement*/ }
class SerialPacket : IPacket { /*Implement*/ }
class Controller
{
private IConnector Connector;
public Controller(IConnector connector)
{
Connector = connector;
}
public void Connect() { Connector.Connect(); }
public void Disconnect() { Connector.Disconnect(); }
public void OpenControl(IPacket packet)
{
Connector.WriteCmd(packet.GetOpenCmd());
}
public void CloseControl(IPacket packet)
{
Connector.WriteCmd(packet.GetCloseCmd());
}
}
結語
想一想覺得橋接跟抽象工廠的概念很類似,於是就拿來魔改出類似的範例,差別是在抽象工廠是負責創建,橋接則是負責抽離原本物件內的行為。
我這邊是將封包的行為抽離出去,再原本抽象工廠的最後繼承的ControllerBase抽象類別簡化成普通類別,不確定自己理解是否完全正確?還請前輩指教。
以上為學習過程的問題紀錄
如果文章有誤,歡迎前輩留言請不吝指教。
發佈留言