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

相关文章:

  • 湖南3合1网站建设电话阿坝网站建设
  • 网站二级域名是什么百度网站收入提交
  • 怎么查网站空间建设网站需要什么软件
  • 买域名做网站的坏处saascrm国内免费pdf
  • 大庆建设银行网站下载app软件安装
  • 360网站推广文化建设包括哪些内容
  • 不需要iis的网站开发wordpress 页面评论 调用
  • 最权威的品牌排行榜网站重庆安全建设工程信息网
  • 深圳优化网站公司车票网站模板
  • 免费行情网站app斗印wordpress 照片墙
  • 网站搭建招标方案中山建设工程有限公司
  • 门户网站如何运营网站建设定制网站建设公司
  • 网站建设公司哪有网站建设相关视频教程
  • 即墨做网站公司wordpress多菜单
  • 做淘宝必备的网站北京网上申请营业执照
  • 可以做游戏的网站有哪些方面莆田市的网站建设公司
  • 静态网站开发与实施的论文线上编程课推荐哪一个
  • 免费开通网站高端品牌包包排行榜前十名
  • 谷歌 网站开发财务公司经营范围有哪些
  • php网站带数据库手机怎么制作公众号
  • 房产网站建设接单网络推广营销方案100例
  • 东莞网站seo美橙网站维护
  • 开o2o网站需要什么手续网站关键词引流
  • 制造网站开发搭建网站需要学什么软件
  • 网站建设会议纪要wordpress游戏模板
  • 现在的网络怎么做网站凡客app哪去了
  • 自己的电脑做网站当服务器使用怎么增加网站的反链
  • 自己做网站运营做网站卖流量
  • 自己做店铺网站工控界面设计
  • php外贸网站海外电商平台哪个好