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

售房网站开发 .net家居网站建设公司

售房网站开发 .net,家居网站建设公司,什么是网页站点,做网站首页图片前言 桥接模式是一种设计模式,它将抽象与实现分离,使它们可以独立变化。这种模式涉及到一个接口作为桥梁,使实体类的功能独立于接口实现类。这两种类型的类可以结构化改变而互不影响。 桥接模式的主要目的是通过将实现和抽象分离,…

前言

        桥接模式是一种设计模式,它将抽象与实现分离,使它们可以独立变化。这种模式涉及到一个接口作为桥梁,使实体类的功能独立于接口实现类。这两种类型的类可以结构化改变而互不影响。

        桥接模式的主要目的是通过将实现和抽象分离,使两者可以独立地变化。这种类型的设计模式属于结构型模式,它通过提供抽象和实现之间的桥接结构来实现这一点。

        例如,一个电视遥控器,它的基本功能(开/关,音量控制等)是抽象的,而这些功能可以通过不同的实现方式(不同品牌的电视机)来实现。如果没有桥接模式,每个品牌的电视机都需要一个专门的遥控器。但有了桥接模式,就可以有一个通用的遥控器,通过桥接模式来控制不同品牌的电视机。

桥接(Bridge)模式包含以下主要角色:

  1. 抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用。
  2. 扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法, 并通过组合关系调用实现化角色中的业务方法。
  3. 实现化(Implementor)角色 :定义实现化角色的接口,供扩展抽象化角色调用。
  4. 具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。

代码案例 

在如下案例中,演示了使用桥接模式实现宠物店中,动物与颜色的组合,如果使用普通方式来写这个案例,我们可能需要写 m(种类) × n(颜色) 个类,而使用了桥接模式,我们只需要写m(种类) + n(颜色)个类,然后用他们来组合成不同的需求

Animal接口

实现创建第一个动物的接口

public interface IAnimal
{void animal(string colour);
}

实现类狗

public class Dog:IAnimal
{public void animal(string colour){Console.WriteLine("这只狗的颜色是:"+colour);}
}

实现类猫,如果后续需要更多的种类,只需要添加实现类

public class Cat:IAnimal
{public void animal(string colour){Console.WriteLine("这只猫的颜色是:"+colour);}
}

颜色选择器

将动物的种类与颜色进行组合就是在这个类中实现,在颜色选择器中,声明了一个animal,然后设置了一个构造函数,传入一个animal类进来,并且写了一个抽象方法,用来打印动物。

public abstract class ColourSelect
{protected IAnimal Animal;protected ColourSelect(IAnimal animal){Animal = animal;}public abstract void outAnimal(string colour);}

白色

白色继承颜色选择器,将构造函数的参数传递给父类,并且重写了outAnimal方法,在里面调用了animal,其实就是我们上面一开始写的,输出动物+颜色

public class black : ColourSelect
{public black(IAnimal animal) : base(animal){}public override void outAnimal(string colour){Animal.animal(colour);}
}

 黑色

同上

public class white : ColourSelect
{public white(IAnimal animal) : base(animal){}public override void outAnimal(string colour){Animal.animal(colour);}
}

测试结果

new一个继承颜色选择器的黑色类,传入一个cat类,因此black.outAnimal即是调用了cat类的animal方法,并且携带一个参数黑色,因此通过Console.WriteLine("这只猫的颜色是:"+colour);打印这只猫的颜色是:黑色,下面的白狗例子同上。

桥接模式优点

         桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。 如:如果现在还有一种视频文件类型wmv,我们只需要再定义一个类实现VideoFile接口即可, 其他类不需要发生变化。 实现细节对客户透明

使用场景

        当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时。 当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。 当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。避免在两个层次之间 建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。

http://www.yayakq.cn/news/454718/

相关文章:

  • 高水平网站运营托管用二级域名做的网站算新站吗
  • 苏州网站建设姜超网站备案用户名
  • 网站访问速度分析WordPress不支持大数据
  • 苏州做网站的公司哪家最好wordpress 标题优化
  • 旅游类网站如何做推广如何做强一个网站的品牌
  • 网站制作的网站网络营销主要传播渠道
  • 苍南哪里有网站建设公司广州网站建设哪家强
  • 400网站建设办公郑州的网站建设公司有哪些
  • 清远网站开发国家中小学网络云平台
  • 做彩票网站捉怎么处理专业招牌制作价格
  • 苏州建设网站哪家好公司网站建设报告
  • 深圳网站关键词排名江门好的建站网站
  • 关于网站建设交易流程的描述一句话性价比高的域名备案加急
  • ftp服务器设置网站主页wordpress淘宝联盟转链
  • 98元建网站wordpress无法用qq邮箱验证
  • 网页设计与网站建设作业答案wordpress 分类字段
  • 可以做生存分析的网站wordpress不同分类目录页面显示文章数量不同
  • 做网站用什么软件初二推荐聊城网站建设
  • 怎么在自己的电脑上做网站泉州网站建设方案维护
  • 怀化优化网站排名营销型网站策划 pdf
  • 建立网站对吗优质服务的小企业网站建设
  • 写作墨问题 网站网加商学院的wordpress
  • 网站建设注册名有规范吗嘉兴五县两区网站建设
  • 网站购物车js代码怎么做上海猎头公司对个人怎么收费
  • 企业建站网站建站系统做二手车有哪些网站有哪些
  • 南阳市做网站景点旅游网站开发与设计
  • 网站建设域名怎么选择网站建设适应全屏如何自动
  • 网站开发人员绩效考核wordpress插件在哪
  • 随州做网站的公司网页设计实训报告总结免费
  • 为什么做儿童音乐网站wordpress页脚页脚插件