java中的桥梁模式(Bridge)理解

Bridge定义 : 将抽象和行为划分开来,各自独立,但能动态的结合.

首先一个功能类的继承关系很多。如一个公司有如下种类的继承,服装公司、汽车公司、宝马汽车公司、女式服装公司等
其次功能类有共同的行为,如服装公司有生产、销售,汽车公司也有生产销售
最后,把共同的行为抽象出来,形成独立的类
如:
class Corp
{
public void produce();
public void sell();
public void other();
}

public CarCorp extends Corp{};
public ClotherCorp extends Corp{};

为了增加更多的灵活性,避免在两个层次之间建立静态的联系,即避免extends的不利影响
提取一个共同行为类:Action

class Action
{
public void produce();
public void sell();
}

然后Corp类聚合Action类
class Corp
{
public Action a;
public void setAction(Action a);
{
this.a=a;
}
public void other(Action a);
}

Action派生类CarAction、ClotherAction实现produce、sell行为

Corp派生类CarCorp、ClotherCorp操作聚合对象a,执行具体的行为。
该聚合对象即为抽象化化角色和具体化角色之间的桥梁。
这样继承关系中的行为被抽出,独立实现,降低了功能类继承关系的耦合度,行为发生变化不会影响到功能类的继承关系。即如果存在grandfather、father、son、grandson的继承关系,如果father类某行为被son和grandson继承,如果修改father的行为会影响到son。如果抽出该行为,则行为的变化不会影响到son。

高手总结的桥梁类使用场合:
1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。
2、设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。
3、一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。
4、虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值