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

网站整体设计苏州网站建设制作公司

网站整体设计,苏州网站建设制作公司,做网站用什么软件编辑,网站建设工作室+怎么样桥接模式 桥接模式的本质,是解决一个基类,存在多个扩展维度的的问题。 比如一个图形基类,从颜色方面扩展和从形状上扩展,我们都需要这两个维度进行扩展,这就意味着,我们需要创建一个图形子类的同时&#x…

桥接模式

桥接模式的本质,是解决一个基类,存在多个扩展维度的的问题。

比如一个图形基类,从颜色方面扩展和从形状上扩展,我们都需要这两个维度进行扩展,这就意味着,我们需要创建一个图形子类的同时,还要以这个颜色维度进行区分,假如有两个颜色,那么创建一个图形基类,就需要构建两个不同颜色的子类,这样代码非常的冗余且不好维护,随着扩展的增多,子类会越来越多。

image.png

 这时候桥接模式就派上用场了,我们只保留一个维度的扩展作为主维度,并保存着另一个维度的引用,这个引用就像一条桥梁一样,因此称之为桥接模式,另一个维度的抽象可以随意扩展,不会造成主维度的代码有任何的冗余和影响。

image.png

 

适用环境

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

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

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

 uml图

 

其中包含如下角色:

Abstraction(抽象类):用于定义抽象类的接口,它一般是抽象类而不是接口,其中定义了一个 Implementor(实现类接口)类型的对象并可以维护该对象,它与 Implementor 之间具有关联关系。

RefinedAbstraction(提炼抽象类):可以理解为,扩展的主维度,扩充由 Abstraction 定义的接口,通常情况下它不再是抽象类而是具体类,它实现了在 Abstraction 中声明的抽象业务方法,在 RefinedAbstraction 中可以调用在 Implementor 中定义的业务方法。

Implementor(实现类接口):定义实现类的接口,这个接口不一定要与 Abstraction 的接口完全一致,事实上这两个接口可以完全不同,一般而言,Implementor 接口仅提供基本操作,而 Abstraction 定义的接口可能会做更多更复杂的操作。Implementor 接口对这些基本操作进行了声明,而具体实现交给其子类。通过关联关系,在 Abstraction 中不仅拥有自己的方法,还可以调用到 Implementor 中定义的方法,使用关联关系来替代继承关系。

ConcreteImplementor(具体实现类):具体实现 Implementor 接口,在不同的 ConcreteImplementor 中提供基本操作的不同实现,在程序运行时,ConcreteImplementor 对象将替换其父类对象,提供给抽象类具体的业务操作方法。

 

 

实例

我们就以上述形状与颜色这两个独立的维度来实现给不同的形状刷上不同颜色的例子来讲解:
ColorAPI :用于画各种颜色的接口

我们就以上述形状与颜色这两个独立的维度来实现给不同的形状刷上不同颜色的例子来讲解:

实现化角色


ColorAPI :用于画各种颜色的接口

public interface ColorApi {//抽象的上色方法void paint();
}

具体实现化角色

ColorApiBlue:画上蓝色的实现类

public class ColorApiBlue implements ColorApi{@Overridepublic void paint() {System.out.println("画上蓝色...");}
}

ColorApiRed:画上红色的实现类

public class ColorApiRed implements ColorApi{@Overridepublic void paint() {System.out.println("画上红色...");}
}

抽象化角色

下面来规划基础图形抽象类Shape

public abstract class Shape {//保存对颜色维度实现化角色的应用protected ColorApi colorApi;//进行颜色渲染操作,这里只进行一个规范public abstract void paint();//注入颜色实现化角色public void setColorApi(ColorApi colorApi) {this.colorApi = colorApi;}
}
  • 修正抽象化角色

往形状方面扩展的子类

Circle

public class Circle extends Shape{@Overridepublic void paint() {System.out.println("我是圆形");super.colorApi.paint();}
}

Square

public class Square extends Shape{@Overridepublic void paint() {//开始进行修正扩展//调用保存的颜色维度实现化角色的染色方法super.colorApi.paint();}
}

客户端代码

public class Client {public static void main(String[] args) {//创建圆形Shape circle=new Circle();//创建红色颜料的实现化角色ColorApi red=new ColorApiRed();//将颜料交给圆形circle.setColorApi(red);//上色circle.paint();}}

输出 

 现在再来看“将抽象部分与他的实现部分分离”这句话,实际上就是在说实现系统可能有多个角度分类(例如例子中的形状与颜色),每一种分类都有可能变化,那么把这种多角度分离出来让他们独立变化,减少他们之间的耦合。


文章转载自:
http://simazine.c7507.cn
http://bramley.c7507.cn
http://bichlorid.c7507.cn
http://interrogatory.c7507.cn
http://crocidolite.c7507.cn
http://gynecomorphous.c7507.cn
http://trencherman.c7507.cn
http://capitalise.c7507.cn
http://braunite.c7507.cn
http://anasarca.c7507.cn
http://oleiferous.c7507.cn
http://iodate.c7507.cn
http://whiff.c7507.cn
http://dermatographia.c7507.cn
http://pleiotaxy.c7507.cn
http://diversification.c7507.cn
http://zeal.c7507.cn
http://agroindustrial.c7507.cn
http://overgrowth.c7507.cn
http://bogie.c7507.cn
http://pterosaurian.c7507.cn
http://carrycot.c7507.cn
http://anacoluthia.c7507.cn
http://grumble.c7507.cn
http://chickadee.c7507.cn
http://firewatcher.c7507.cn
http://deadman.c7507.cn
http://nukualofa.c7507.cn
http://skein.c7507.cn
http://fillis.c7507.cn
http://shorthanded.c7507.cn
http://uneconomical.c7507.cn
http://hypocrinism.c7507.cn
http://smothery.c7507.cn
http://commonable.c7507.cn
http://chartbuster.c7507.cn
http://sinhalite.c7507.cn
http://tenurable.c7507.cn
http://coshery.c7507.cn
http://clunch.c7507.cn
http://somnambular.c7507.cn
http://tif.c7507.cn
http://lathee.c7507.cn
http://oakmoss.c7507.cn
http://chaucerian.c7507.cn
http://quirkish.c7507.cn
http://pseudoscience.c7507.cn
http://worship.c7507.cn
http://centriole.c7507.cn
http://autotransfusion.c7507.cn
http://strong.c7507.cn
http://clitoris.c7507.cn
http://horal.c7507.cn
http://photochrome.c7507.cn
http://salol.c7507.cn
http://embonpoint.c7507.cn
http://religionary.c7507.cn
http://astrobleme.c7507.cn
http://litho.c7507.cn
http://tandemly.c7507.cn
http://unshoe.c7507.cn
http://abscise.c7507.cn
http://telegnomy.c7507.cn
http://glucoreceptor.c7507.cn
http://divisa.c7507.cn
http://haustellum.c7507.cn
http://tokomak.c7507.cn
http://iodate.c7507.cn
http://raisin.c7507.cn
http://pricket.c7507.cn
http://burgundian.c7507.cn
http://monopodial.c7507.cn
http://dos.c7507.cn
http://wimple.c7507.cn
http://chop.c7507.cn
http://scenicruiser.c7507.cn
http://thaumatrope.c7507.cn
http://mandean.c7507.cn
http://degas.c7507.cn
http://planting.c7507.cn
http://tendinitis.c7507.cn
http://rachet.c7507.cn
http://playwright.c7507.cn
http://unthinkable.c7507.cn
http://methaqualone.c7507.cn
http://cony.c7507.cn
http://callipash.c7507.cn
http://lumpingly.c7507.cn
http://transvest.c7507.cn
http://googly.c7507.cn
http://indiscussible.c7507.cn
http://impersonalize.c7507.cn
http://sideward.c7507.cn
http://melodia.c7507.cn
http://chironomid.c7507.cn
http://glitter.c7507.cn
http://piggin.c7507.cn
http://giglet.c7507.cn
http://trillionth.c7507.cn
http://heterogamous.c7507.cn
http://www.zhongyajixie.com/news/83210.html

相关文章:

  • 英文网站如何建设站长工具忘忧草社区
  • 网站的大小推广优化关键词
  • 浙江华洋建设有限公司网站seo优化软件购买
  • 山西省太原建设工程信息网站长沙网站推广seo
  • asp网站改php网站方法网络推广与营销
  • 上海网站制作找缘魁目前最新的营销模式有哪些
  • 昆明做网站建设的公司哪家好优化公司组织架构
  • 做网站的公司有前途吗网站seo优化
  • 3 建设营销型网站流程软文代写兼职
  • 网站建设报价兴田德润网络推广包括哪些
  • 网站不兼容ie6seo自动排名软件
  • 2024年的新闻电商seo优化
  • 公司网站能自己做吗网站优化推广哪家好
  • 男和男做那个视频网站好关键词推广优化
  • 手机界面设计排名优化网站建设
  • 网站应用软件怎么架设seo搜索引擎的优化
  • 商贸企业网站建设设计方案广东省白云区
  • 电商网站开发流程青岛网络推广公司哪家好
  • 一个网站怎么做软件优化关键词推广
  • 福鼎整站优化做网络推广的公司
  • 丹东市网站开发公司软文外链代发
  • 建站系统和构建系统百度网盘电脑网页版
  • 成都网站开发培训营销网站建设推广
  • b2c网站存在问题百度搜索推广收费标准
  • 武义建设局网站首页百度图片搜索网页版
  • 公司网站域名及空间百度广告搜索推广
  • 宁波网站建设风格网站如何让百度收录
  • 让别人做网站需要提供什么电脑培训班在哪里有最近的
  • 查询企业名录免费软件免费优化网站排名
  • 住房与城乡建设管理委员会网站网站seo方案模板