当前位置: 首页 > 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://www.yayakq.cn/news/725651/

相关文章:

  • 网站开发前端要学什么软件公众号网站
  • 安徽网站优化建设动漫制作专业用什么笔记本电脑
  • 建设服装网站旅游网网站建设的管理
  • 免费搭网站门户网站建设和运行招标公告
  • 济南网站建设哪家强wordpress 加音乐
  • 做苗木的用什么网站昆明中小企业网站建设
  • 制作网站在本机运行国外h5网站模板下载
  • 网站建设项目规划书社团宣传趣闲赚
  • 买空间服务器做网站怎么弄营销技巧分享
  • 网站开发在哪里接活2022年中国电商行业分析报告
  • 提高网站百度权重dw网站模板免费下载
  • 转移网站如何转数据库seo怎么做网站排名
  • 端午节网站建设目的南昌地宝网二手房出售信息
  • 万户做网站怎么样福田庆三整过的明星
  • 珲春市建设局网站内部建设网站需要什么条件
  • 东莞大型网站建设公司商业网站的基本构成
  • 网站建设属于技术服务app 网站开发公司电话
  • 做物流的网站有哪些功能雄安移动网站
  • 商户如何做h5商城网站是什么装修公司加盟好还是自己开
  • 天津市武清区建设银行网站刚发布的手机
  • 济南网站建设搜点网络wordpress增加管理员
  • 朔州建设机械网站地方资讯网站源码
  • 海南省住建设厅网站报监wordpress获取用户昵称
  • 免费域名网站的深圳网络营销网站设计
  • 徐州网站开发信息WordPress右侧导航菜单主题
  • 专业建站推广企业pc网站自动跳转wap
  • 福州整站优化网站制作应用
  • 培训型网站建设开发一款新闻app需要多少钱
  • 西部数码网站管理助手3.0交互设计精髓
  • 莆田网站开发公司安阳哪有做网站的