- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件设计中桥梁模式实现与分析
软件设计中桥梁模式实现与分析
【摘 要】在软件设计模式中,桥梁模式是结构模式的一种,可以有效地将软件产品的抽象化部分与实现化部分进行脱耦,从而使抽象部分与实现可以相对独立的变化。本文主要讨论桥梁模式的实现方法及分析。
【关键词】实现、脱耦、独立变化
1、现象分析
在软件产品的研发过程中,随着开发过程的逐步深入,我们避免不了地需要“改”程序。程序开发人员可以使用面向对象继承的特征,实现程序的重用和改写,从而使程序适应开发过程中的变化,有效地解决程序的扩展问题。
使用面向对象技术研发软件产品,存在着这样一种情况,一类事物的变化与其它多类事物存在着牵连,也就是说,通常一类事物引起变化的因素比较多。这时,就使得当其它部分出现变化时,需要更改前一类事物。虽然使用面向对象继承的机制可以实现程序要求,但会使程序中类的数量成爆炸性增长。例如:以生产可乐为例,可乐可以根据瓶子的尺寸分为大瓶可乐和小瓶可乐,还可以根据生产厂商的不同分为百事可乐和可口可乐。
仔细分析上面的类图,会发现这样一个问题:使用继承机制扩展可乐的生产实现,会给开发带来很多不便。如果增加一个可乐的生产厂商,这个厂商需要分别做大瓶可乐和小瓶可乐两种实现;如果程序要添加一种新的可乐尺寸,程序需要为所有已有厂商添加新尺寸的实现。在这种情况下,我们发现扩展程序虽能实现,但实现不方便,结构繁杂。那么,有没有什么办法能够更好的解决灵活扩展的问题呢?有,那就是桥梁模式。
2、桥梁模式实现
桥梁模式的核心思想将抽象部分与它的实现部分分离,使它们都可以独立地变化。在生产可乐饮料的例子中,我们使用继承的实现方式实质上创建了一种强性关联,使用桥接方式可以将强性关联转变成弱关联,也就是脱耦。
桥梁模式中的角色:
抽象角色:定义抽象类的接口而且维护着一个指向实现角色的引用。
精确抽象角色:实现并扩充由抽象角色定义的接口。
实现角色:定义实现类的接口,接口与抽象角色中的接口可以不一致。
具体实现角色:定义实现角色定义接口的具体实现。
3 实现代码
(1)实现接口的定义
主要任务是定义抽象部分需要的功能,仅完成抽象功能定义。但需要注意,其定义形式可以与抽象部分的定义形式不同,示意代码如下:
public interface 实现
{
void 实现操作();
}
(2)抽象部分的定义
在此部分需要调用实现部分定义的操作。因此,在抽象部分需要持有实现部分的引用,构建具体抽象对象时指定具体实现的对象,使程序基于组合的结构方式完成功能。示意代码如下:
public abstract class 抽象
{
protected 实现实现引用;
public 抽象(实现实现引用)
{
this.实现引用 =实现引用 ;
}
public void 操作()
{
实现引用.实现操作();
}
}
(3)具体实现的定义
完成实现接口定义的抽象方法,示意代码如下:
具体实现1:
public class 具体实现1 implements 实现
{
public void 实现操作()
{
//具体实现操作
}
}
具体实现2:
public class 具体实现1 implements 实现
{
public void 实现操作()
{
//具体实现操作
}
}
(4)精确抽象的定义
其泛化了抽象部分,具备抽象部分开放的操作,完成了更为具体的操作,示例代码如下:
精确抽象1:
public class 精确抽象1 extends 抽象
{
public 精确抽象1(实现 实现引用)
{
super(实现引用);
}
public void 其他操作()
{
//通过使用抽象中定义的方法来扩展的功能
}
}
精确抽象2:
public class 精确抽象2 extends 抽象
{
public 精确抽象1(实现 实现引用)
{
super(实现引用);
}
public void 其他操作()
{
//通过使用抽象中定义的方法来扩展的功能
}
}
(5)客户端调用
在客户端调用时,首先根据
您可能关注的文档
- 转基因动物商业化伦理研究.doc
- 转基因学习构建基于规则适合大规模招生e―learning模型.doc
- 转基因技术发展所引发伦理思考.doc
- 转基因成分检测抽制样方法在农业生物安全风险监测方面应用.doc
- 转基因技术在动物遗传改良上应用进展.doc
- 转基因大豆秸秆还田对土壤酶活性影响.doc
- 转基因技术在水稻性状改良中应用进展.doc
- 转基因技术应用现状和发展对策.doc
- 转基因抗草甘膦玉米CL38―1草甘膦耐受性及杂草化风险评价.doc
- 转基因抗虫棉对棉红铃虫发生与为害影响.doc
- 2025-2026学年小学综合实践活动一年级下册浙科技版教学设计合集.docx
- 星级酒店客房部保洁服务标准与工作流程操作规范.docx
- 2025年载人飞行器复合材料轻量化结构设计报告.docx
- 2025年工业合规性设备互联安全审计标准报告.docx
- 公文写作规范与公文处理技巧.docx
- 2025年生物基材料在建筑保温领域的应用技术报告.docx
- 2025年智能巡检机器人在水泥厂设备运行分析中的应用报告.docx
- 2025年低空物流枢纽园区运营方案报告.docx
- 2025-2026学年小学综合实践活动粤教版2019版三年级下册-粤教版(2019版)教学设计合集.docx
- 行车风险告知书.docx
原创力文档


文档评论(0)