解释 网络桥接模式
桥接模式的定义:
抽象和实现是分离的,因此它们可以独立地改变。
桥梁模式结构图:
桥接模式中的角色:
抽象角色:抽象给定的定义并保存对已实现对象的引用。修改精化抽象的角色:扩展抽象的角色,改变和修改父类对抽象的定义。实现者角色:这个角色给出了实现角色的接口,但没有给出具体的实现。必须指出的是,这个接口不一定和抽象角色的接口定义一样。事实上,这两个接口可能有很大的不同。实现的角色只给出底层操作,抽象的角色只给出基于底层操作的高层操作。
结合实例:
举一个电视遥控器的例子,每个品牌的遥控器都由相应的遥控器控制。这时我们可能会想到一套要实现的功能方法,比如开机、关机、换台。然后创建一个特定的远程控制类来继承这个接口并实现里面的方法。这样,每台电视机都可以实现自己的遥控。对于其他新增加的电视机,只能增加一个派生类,以满足新遥控器的派生。但是,当用户想给遥控器增加一个返回前一通道的功能时,他需要改变遥控器的接口,给抽象类增加一个新的方法,从而改变抽象类的实现。如果用户想同时改变电视机的产品行为和遥控器的行为方式,会对上述设计造成很大的改变。使用桥接模式可以很好地解决这些问题。
使用:
1.首先,对电视机进行抽象,给出遥控变化的行为方法。
///summary ///TV,提供抽象方法////summary公共抽象类TV { public abstract void on();公共抽象void Off();公共抽象void tune channel();}2.创建从抽象电视类继承的特定电视:
///summary ///Samsung TV,重写基类////summary公共类Samsung 3360 TV { public override void on(){ console。writeline('三星电视已打开');}公共覆盖void off(){控制台。writeline('三星电视已关闭');} public override void tune channel(){ console . write line('三星电视机换台');} }///Summary////长虹电视机,重写基类的抽象方法////提供具体实现////Summary Public类长虹: TV { Public override void on(){ console。writeline(‘长虹电视机已开’);}公共覆盖void off(){控制台。writeline(‘长虹电视机已关机’);}公共覆盖void tune channel () {console。writeline(‘长虹电视机换台’);} }3.然后在概述中抽象遥控器,起到抽象词的作用。
///Summary////抽象概念中的遥控器起着抽象的作用////Summary Public抽象类遥控器{Public TV实现者{ get设置;}///summary////打开电视////这里,抽象类中不再提供实现,但是实现类中的实现被称为////summary public virtual void on(){ imperiator . on();}///summary////关闭电视////summary public virtual void off(){实现者。off();}///summary////change channels////summary public virtual void set channel(){ imperiator . tune channel();} }4.创建一个特定的遥控器类:在这个中,我已经重写了换频道的方法,其实我还可以重写其他的方法。
///summary ///specific远程控制类////summary public class混凝土远程:远程控制{///summary////重写频道更改方法////summary public override void set channel(){ console . write line('重写频道更改方法');基地。SetChannel();} }5.呼叫:
static void main(string[]args){//创建一个远程控制远程控制=新建混凝土远程();//长虹电视遥控器。实施者=new changhong();remoteControl。on();remoteControl。SetChannel();remoteControl。off();控制台。WriteLine();//三星电视遥控器。实施者=新三星();remoteControl。on();remoteControl。SetChannel();remoteControl。off();控制台。read();}这样就实现了桥接模式的设计。遥控器的功能实现方法不是在遥控器中实现,而是将实现部分用在另一个电视类中进行封装。遥控器只包含电视类的一个引用。通过桥接模式,我们将抽象部分和实现部分分开,这样就可以很好地处理这两个方面的变化。
优点:
抽象接口与其实现解耦,中间抽象和实现可以独立扩展,互不影响。
缺点:
并且增加了系统的复杂性。
使用场景:
1.如果系统需要在组件的抽象角色和具体角色之间增加更多的灵活性,请避免在这两个级别之间建立静态连接。2.设计要求实现的角色的任何改变都不应该影响客户端,或者实现的角色的改变对客户端是完全透明的。3.需要跨多个平台的图形和窗口系统。4.一个类有两个独立变化的维度,两个维度都需要扩展。
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

















