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

网站开发国内外研究背景想学管理方面的培训班

网站开发国内外研究背景,想学管理方面的培训班,网站带支付模板,网站开发硬件设计1. W1 是什么,什么是桥接模式? 桥接模式是一种结构性模式。 桥接模式旨在将抽象与实现解耦,使它们可以独立地变化。可以这么理解,面向对象编程是单继承多实现的,如果我们有一个可扩展类,和多个相关的可扩展…

1. W1 是什么,什么是桥接模式?

  1. 桥接模式是一种结构性模式。

  2. 桥接模式旨在将抽象与实现解耦,使它们可以独立地变化。可以这么理解,面向对象编程是单继承多实现的,如果我们有一个可扩展类,和多个相关的可扩展维度的话,就可以创建一个抽象类来像桥梁一样连接这些个维度。
    因此这里的抽象可以理解为有一个抽象类,实现就代表多个接口。而桥接模式就是在这个抽象类里放多个接口,结构不就清晰明了了哇。

2. W2 为什么,为什么需要使用桥接模式,能给我们编码带来什么好处?

  1. 解耦抽象与实现:桥接模式有助于将抽象部分与实现部分分离。通过将两者之间的连接通过桥接对象进行,可以使它们可以独立地变化。这种解耦使得系统更加灵活,更容易扩展和维护。

  2. 提高可扩展性:通过桥接模式,我们可以轻松添加新的抽象部分和实现部分,而不需要修改现有的代码。例如,在下面的怪物例子中,我们可以添加新的攻击方式或属性类,而不会影响现有的攻击方式和属性的组合。这种可扩展性使得系统更具弹性,能够适应变化的需求。

  3. 支持组合复用:桥接模式使得可以通过组合不同的抽象部分和实现部分来创建不同的组合对象。这种组合复用的方式使得系统更加灵活,可以根据需要构建不同的对象组合。

  4. 提高可维护性和可读性:通过将抽象和实现分离,桥接模式使得代码结构更清晰,易于理解和维护。每个部分都有自己的责任,而且它们之间的关系也更加明确。这种清晰性和可读性有助于减少错误和改进代码的可维护性。

3. W3,如何使用?下面是代码示例:

  1. 假设我们正在开发一个游戏,其中有不同类型的怪物(Monster)。每个怪物都有不同的攻击方式(AttackMode),比如近战攻击和远程攻击。同时,怪物还有不同的属性(Attribute),比如光属性和雷属性。

  2. 分析发现,这里的怪物可扩展,有不同类型,怪物的攻击方式也可扩展,有近战和远程,同时怪物还有不同的属性,也可扩展,那么这里就有3个可扩展的维度,我们选择其中的一个维度作为抽象类,其他的作为接口,用这个抽象类连接其他接口,这就是桥接模式了。

  3. 那选谁作为这个抽象类呢,选主体Monster是比较符合我们编程风格的。

代码示例:

// 首先,我们定义一个抽象类 Monster,它包含了怪物的基本属性和抽象方法
abstract class Monster {// 攻击方式protected lateinit var attackMode: AttackMode// 基本属性protected lateinit var attribute: Attributefun setAttackMode(attackMode: AttackMode) {this.attackMode = attackMode}fun setAttribute(attribute: Attribute) {this.attribute = attribute}abstract fun display()abstract fun attack()abstract fun defend()
}// 然后,我们定义接口 AttackMode, Attribute,其中包含了怪物攻击的方法以及怪物的属性:
interface AttackMode {fun attack()
}interface Attribute{fun display()
}// 接下来,我们创建不同类型的怪物,每个怪物都可以设置不同的攻击方式和展示不同的属性:
class MeleeMonster : Monster() {override fun display() {attribute.display()}override fun attack() {attackMode.attack()}override fun defend() {println("Defending as a melee monster")}
}class RangedMonster : Monster() {override fun display() {attribute.display()}override fun attack() {attackMode.attack()}override fun defend() {println("Defending as a ranged monster")}
}// 最后,我们实现具体的攻击方式,比如近战攻击和远程攻击,还要实现具体的属性,比如光属性,雷属性:class MeleeAttack : AttackMode {override fun attack() {println("Performing melee attack")}
}class RangedAttack : AttackMode {override fun attack() {println("Performing ranged attack")}
}class LightAttribute: Attribute {override fun display() {println("Show body protection light")}
}class ThunderAttribute: Attribute{override fun display() {println("Show body protection thunder")}
}// 现在,我们可以在应用程序中使用这些类来创建怪物,并设置它们的攻击方式和属性:
fun main() {val meleeMonster = MeleeMonster()meleeMonster.setAttackMode(MeleeAttack())meleeMonster.setAttribute(LightAttribute())meleeMonster.display()meleeMonster.attack()meleeMonster.defend()val rangedMonster = RangedMonster()rangedMonster.setAttackMode(RangedAttack())rangedMonster.setAttribute(ThunderAttribute())rangedMonster.display()rangedMonster.attack()rangedMonster.defend()
}

Thank you for your reading, best regards!

http://www.mmbaike.com/news/102332.html

相关文章:

  • asp黑网站源码全国最新疫情最新消息
  • 常州网站制作套餐培训网站制作
  • 可以下载app的软件西安seo站内优化
  • 网站文章内容一键排版功能首页关键词优化公司
  • 传奇怎么做充值网站网络营销主要做什么
  • 阿里巴巴国际站骗局河南省人民政府
  • 德宏企业网站建设公司6百度免费推广平台
  • 中国今日新增新冠肺炎厦门seo关键词
  • 仓储网站模板淄博网络推广公司哪家好
  • php网站开发实例教程思考题搜索引擎登录入口
  • 网站空间备份最近的国际新闻大事
  • 大气红色礼品公司网站源码东莞搜索网络优化
  • wordpress 只发一句话qq群排名优化软件
  • 网站哪些页面会做静态化个人模板建站
  • 网站建设公司团队简介优化大师是什么
  • 电脑网站适应手机如何做seo 专业
  • 广东东莞现在疫情严重吗保定seo推广外包
  • 克隆网站怎么导入wordpress刷百度关键词排名
  • 武汉网页设计女生seo专员很难吗为什么
  • 做英语词汇测试的软件网站宁波seo关键词排名优化
  • 网站seo关键词设置谷歌在线浏览器入口
  • 网站建站费用多少钱网络营销教学大纲
  • ui培训设计机构北京seo外包
  • 营销渠道策略怎么写seo站外优化最主要的是什么
  • 做移动类网站的书推荐注册域名
  • drupal7建站教程宁波网络推广方法
  • discuz怎么做网站seo舆情优化
  • 搭建什么网站最赚钱百度推广深圳分公司
  • 网站1g空间多大加盟培训机构
  • python3.5 做网站拉人头最暴利的app