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

南山网站建设深圳信科哪些网站需要做分享按钮

南山网站建设深圳信科,哪些网站需要做分享按钮,棋牌室的网站怎么做,网站优化套餐前言 桥接模式是一种设计模式,它将抽象与实现分离,使它们可以独立变化。这种模式涉及到一个接口作为桥梁,使实体类的功能独立于接口实现类。这两种类型的类可以结构化改变而互不影响。 桥接模式的主要目的是通过将实现和抽象分离,…

前言

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

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

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

桥接(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/468416/

相关文章:

  • 哪个网站可以做图交易平台狮岭箱包外发加工网
  • 找网站建设公司哪家最好公司企业邮箱优势
  • 人才交流网站建设与设计网站排名网络推广
  • 专业手机网站建设企业素材网免费素材
  • 怎么做网站详情页wordpress第三方收款
  • 做一个论坛网站多少钱wordpress关注公众号登录
  • 网站模板怎么建站网站设计风格方案
  • 苏州要服务网站建设微信网站改版价格
  • 公司的网站开发服务费怎么入账个人简历怎么写简短又吸引人
  • 做IT的需要别人打开网站吗开发商城网站公司
  • 网站建设中什么意思个旧市建设局网站
  • 中国网站优化公司承接app网站开发的广告
  • 张掖响应式建站平台免费一键生成个人网站
  • 酒业网站建设学做淘宝客网站
  • 青海西宁网页网站制作企业网页设计尺寸
  • 敦煌做网站的公司电话一个企业做网站的目的
  • cmd iis网站icon图标素材下载网站
  • 基于网站开发appgoogle广告在wordpress
  • 海南建设厅网站微信推广网站怎么做
  • 赛车网站开发吴忠市建设局网站
  • 西宁做网站公司长沙网站开发方案
  • 西安网站建设品牌公司推荐东莞网站优化推荐
  • 怎么学网站建设中建一局招聘网
  • 静态网站开发百科微信下载安装免费2022
  • 网站规划书包含哪些内容网站虚拟交易技术怎么做
  • 网站备案域名所有人五金喷漆东莞网站建设
  • 大连哪里做网站好北京企业网站建设哪家好
  • 宁波公司网站开发青浦郑州阳网站建设
  • 网站建设 英语翻译在线设计自己的签名免费
  • 本溪市网站建设网站开发工作描述