前两天对桥接模型进行了研究,以前也有研究就是不用就忘了,今天把它记录下来,供大家分享:要扣字眼,理解桥,桥到底搭在什么地方。
1.意图
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
用抽象类的方式
代码
Window 类实现:
public abstract class Window : IconWindow, TransientWindow
{
public virtual WindowImp WindowImp
{
get;set;
}
public abstract void DrawText();
public abstract void DrawCloseBox();
}
IconWindow类:
public class IconWindow
{
public virtual void DrawBorder()
{
throw new System.NotImplementedException();
}
}
WindowImp类
public abstract class WindowImp
{
public abstract void DecDrawText();
public abstract void DecDrawLine();
}
XWindowImp 类
public class XWindowImp : WindowImp
{
public override void DecDrawText()
{
throw new System.NotImplementedException();
}
public override void DecDrawLine()
{
throw new System.NotImplementedException();
}
}
TransientWindow类
public class TransientWindow
{
public virtual void DrawCloseBox()
{
throw new System.NotImplementedException();
}
}
2.动机说明
当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同的方式加以实现。但是此方法不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用。
所以用桥接进行扩展和修改
用接口的方式
接口IEngine
public interface IEngine
{
void Start();
void Stop();
}
Car类
public abstract class Car : IEngine
{
public virtual object IEngine _engine
{
get;
set;
}
public Car(object IEngine engine)
{
}
public abstract void Start();
public abstract void Stop();
}
Bus类
public class Bus : Car
{
public virtual void Bus(object IEngine engine)
{
throw new System.NotImplementedException();
}
public override void Start()
{
throw new System.NotImplementedException();
}
public override void Stop()
{
throw new System.NotImplementedException();
}
}
Limousine 类
public class Limousine : Car
{
public Limousine (object IEngine engine)
{
}
public override void Start()
{
throw new System.NotImplementedException();
}
public override void Stop()
{
throw new System.NotImplementedException();
}
}
DieselEngine类(不同引擎的实现)
public class DieselEngine : IEngine
{
public virtual void Start()
{
throw new System.NotImplementedException();
}
public virtual void Stop()
{
throw new System.NotImplementedException();
}
}
GasEngine类(不同引擎的实现)
public class GasEngine : IEngine
{
public virtual void Start()
{
throw new System.NotImplementedException();
}
public virtual void Stop()
{
throw new System.NotImplementedException();
}
}
- 大小: 55.3 KB
- 大小: 59 KB
分享到:
相关推荐
PCI(Peripheral Component Interconnect)根桥是计算机系统中一种至关重要的硬件组件,它在系统总线和PCI设备之间建立通信路径。PCI根桥是PCI Express(PCIe)架构中的核心部分,负责管理PCI设备的资源分配,同时也...
ioBroker20.homepilot 测试: Linux / Mac: 视窗: :Germany:变更日志0.0.19 (homecineplexx)修复缺少common.type的问题0.0.18 (homecineplexx)修复了Brdige和自动模式的问题0.0.17 (homecineplexx)为另外两...
雨林-> MQTT桥 必需的环境变量 信封变量 例子 MQTT_HOST “ mqtt://your-mqtt.server.here” 必需的 MQTT_USER “ mqtt用户名” 可选的 MQTT_PASS “ mqtt密码” ...模式 此mqtt brdige有两种模式
IframeBridge Iframe bridge 视频教程 IframeBridge 用于在同一个页面中的不同框架之间跨域通信。 比如主页面与嵌入的页面之间通信,方式如下: index.html 文件内容如下 <!DOCTYPE html> <...
各位只需要将CLib4Swift.h、CLib4Swift.c以及SwiftAtomic.swift三个文件放入到自己项目工程中即可,然后还需要将"CLib4Swift.h"头文件include到你的brdige头文件中。 具体使用非常简单,直接看main.swift中的测试...
3.10 kernel中bridge逻辑的大改变是增加了vlan处理逻辑以及brdige入口函数的设置。 1. netdev_rx_handler_register 在分析之前首先要介绍一个重要函数:netdev_rx_handler_register,这个函数是2.6内核所没有...