BRDIGE(桥接)----对象结构型模式研究

前两天对桥接模型进行了研究,以前也有研究就是不用就忘了,今天把它记录下来,供大家分享:要扣字眼,理解桥,桥到底搭在什么地方。
1.意图
将抽象部分与它的实现部分分离,使它们都可以独立地变化。

[img]http://dl2.iteye.com/upload/attachment/0105/2792/577d40a8-24ea-3f6c-9412-97483a47eeb7.jpg[/img]
用抽象类的方式
代码
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.动机说明
当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同的方式加以实现。但是此方法不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用。
所以用桥接进行扩展和修改

[img]http://dl2.iteye.com/upload/attachment/0105/2796/08cdecd5-8ae5-328a-a2ee-9b8f9d66c9a5.jpg[/img]
用接口的方式

接口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();
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值