当前位置: 首页 > news >正文

山西网站建设运营公司武汉网站seo德升

山西网站建设运营公司,武汉网站seo德升,2345网址大全手机版,做网站图片ps用哪种字体闻正言,行正道,左右前后皆正人 一,定义 将抽象部分与实现部分分离,使它们都可以独立地进行变化 二,使用场景 从模式的定义中,我们大致可以了解到,这里的桥接的作用其实就是连接抽象部分与实现…

闻正言,行正道,左右前后皆正人

一,定义

将抽象部分与实现部分分离,使它们都可以独立地进行变化

二,使用场景

从模式的定义中,我们大致可以了解到,这里的桥接的作用其实就是连接抽象部分与实现部分,但事实上,任何多维度变化类或者说多个树状类之间的耦合都可以使用桥接模式来实现解耦。

如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免 在两个层次之间建立静态的继承联系,可以通过桥接模式使它们在抽象层建立一个关联关系。

对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,也可以考虑使用桥接模式。

一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。

三,角色介绍

1,Abstraction 抽象部分

该类保持一个对实现部分对象的引用,抽象部分中的方法需要调用实现部分的对象来实现,该类一般为抽象类。

2,RefinedAbstraction 优化的抽象部分

抽象部分的具体实现,该类一般是对抽象部分的方法进行完善和扩展。

3,Implementor 实现部分

可以为接口或抽象类,其方法不一定要与抽象部分中的一致,一般情况下是由实现部分提供基本的操作,而抽象部分定义的则是基于实现部分这些基本操作的业务方法。

4,ConcreteImplementor 实现部分的具体实现

完善 实现部分中方法定义的具体逻辑

5,Client 客户端调用

四,使用案例

假如我们的笔记本工厂有联想i5,联想i7,联想i9,华硕i5,华硕i7,华硕i9这些类型的电脑生产。那么对于笔记本电脑来说,实质上就两种变化,联想和华硕、i5,i7,i9

那么我们就将品牌定义为抽象部分,cpu型号定义为实现部分。因为它们是两个维度的变化,当然也可以反过来定义。

首先定义实现部分,生产不同的CPU

public interface CPU {void makeCPU();
}

然后具体实现不同的CPU型号:

public class I5cPU implements CPU{@Overridepublic void makeCPU() {System.out.println("生产i5Cpu");}
}
public class I7Cpu implements CPU{@Overridepublic void makeCPU() {System.out.println("生产i7Cpu");}
}
public class I9Cpu implements CPU{@Overridepublic void makeCPU() {System.out.println("生产i9Cpu");}
}

 然后定义抽象部分,持有实现部分CPU的引用 ,生产不同品牌的电脑:

/*** 抽象部分  笔记本电脑* */
public abstract class NoteBook {protected CPU cpu;public NoteBook(CPU cpu) {this.cpu = cpu;}/**** */public abstract void makeComputer();}

然后是RefinedAbstraction 优化的抽象部分,实现不同品牌的电脑:

public class LenovoNoteBook extends NoteBook{public LenovoNoteBook(CPU cpu) {super(cpu);}@Overridepublic void makeComputer() {System.out.println("生产联想电脑");cpu.makeCPU();}
}
public class AsusNoteBook extends NoteBook{public AsusNoteBook(CPU cpu) {super(cpu);}@Overridepublic void makeComputer() {System.out.println("生产华硕笔记本电脑");cpu.makeCPU();}
}

最后是在client使用:

I5cPU i5cPU =new I5cPU();
I7Cpu i7Cpu =new I7Cpu();
I9Cpu i9Cpu =new I9Cpu();
//联想i5
LenovoNoteBook lenovoNoteBook1 =new LenovoNoteBook(i5cPU);
lenovoNoteBook1.makeComputer();
//联想i7
LenovoNoteBook lenovoNoteBook2 =new LenovoNoteBook(i7Cpu);
lenovoNoteBook2.makeComputer();
//联想i9
LenovoNoteBook lenovoNoteBook3 =new LenovoNoteBook(i9Cpu);
lenovoNoteBook3.makeComputer();
//华硕i5
AsusNoteBook asusNoteBook1 =new AsusNoteBook(i5cPU);
asusNoteBook1.makeComputer();
//华硕i7
AsusNoteBook asusNoteBook2 =new AsusNoteBook(i7Cpu);
asusNoteBook2.makeComputer();
//华硕i9
AsusNoteBook asusNoteBook3 =new AsusNoteBook(i9Cpu);
asusNoteBook3.makeComputer();

输出结果:

 

如果 我们想再增加 一个惠普品牌的笔记本电脑,那么只需要新建一个类 实现抽象部分即可:

 

public class HPNoteBook extends NoteBook{public HPNoteBook(CPU cpu) {super(cpu);}@Overridepublic void makeComputer() {System.out.println("生产惠普笔记本电脑");}
}

在客户端使用:

 

//惠普i5
HPNoteBook hpNoteBook1 =new HPNoteBook(i5cPU);
hpNoteBook1.makeComputer();
//惠普i7
HPNoteBook hpNoteBook2 =new HPNoteBook(i7Cpu);
hpNoteBook2.makeComputer();
//惠普i9
HPNoteBook hpNoteBook3 =new HPNoteBook(i9Cpu);
hpNoteBook3.makeComputer();

同样的如果 我们要增加实现部分CPU型号,比如要增加i3,也是直接新建 类就可以。

五,总结

桥接模式可以应用到许多开发中,但是它应用的却不多,一个很重要的原因是对于抽象与实现的分离把握,是不是需要分离,如何分离?对设计者来说要有一个恰倒好处的分寸。不管怎么说,桥接模式的优点我们毋庸置疑,分离抽线与实现,灵活的扩展以及对客户来说透明的实现等。但是使用桥接模式也有一个不明显的缺点,上面我们也提到了,就是不容易设计,对开发者来说要有一定的经验要求,因此,对桥接模式应用来说,理解很简单,设计却不容易。

参考文献:Android源码设计模式解析与实战

http://www.yidumall.com/news/46914.html

相关文章:

  • 用手机做电影网站搜索引擎优化论文3000字
  • 常州做网站优化品牌型网站制作价格
  • 成都高端建设网站seo专业培训技术
  • 常见网站页面布局类型福建搜索引擎优化
  • 院系网站建设具体要求推广网站文案
  • 专做批发的网站各类资源关键词
  • 深圳龙华做网站深圳网络营销和推广渠道
  • 上海做网站的公司是什么无锡seo网站排名
  • 成都网站建设思乐科技公司营销案例分享
  • 工程项目管理软件app河南网站优化排名
  • 宿迁做网站的百度收录查询方法
  • 校园网站开发的目的汕头网站制作设计
  • 昆明网站建设首选互维网站维护是什么意思
  • 给卖假性药的做网站一般要判多久页面关键词优化
  • 纪念馆网站建设方案青岛网站建设制作公司
  • 杭州网站设计公司哪个好免费seo提交工具
  • 网站建设服务杭州石家庄网站建设排名
  • 网站开发合同变更百度竞价开户
  • 企业每年向工商网站做申报最常用的搜索引擎有哪些
  • 网站二级域名怎么解析seo网络优化前景怎么样
  • dede网站怎么备份seo整站优化公司持续监控
  • 设计师经常上的网站互联网营销是什么
  • 怎么把自己做的网站放到网上线上推广平台有哪些
  • 红阳建设集团网站重庆高端品牌网站建设
  • 企业网络服务平台关键词seo公司真实推荐
  • wordpress get_nav青岛推广优化
  • wordpress 安装路径it菜鸡网seo
  • 个人营销网站网页版
  • 广告设计专业英语怎么做seo关键词优化
  • 建站之星官网登陆淘宝自动推广软件