当前位置: 首页 > 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/870652/

相关文章:

  • 残联网站建设概况网页自我介绍制作模板
  • 商城类网站如何做给公司网站做seo
  • 企业网站建设需要哪些资料信息国内免备案
  • 成都本地网站建设河南省重点项目建设网
  • 网站做优化每天一定要更新朋友圈营销推广
  • 信誉好的丹阳网站建设塘沽企业网站建设
  • 如何进行主题网站的资源建设wordpress主题两边空白区域怎么添加图案
  • 能打开任何网站的浏览器怎样建网站赚钱
  • 做问卷的网站好想找人帮我做网站
  • 开展我国电子网站建设建设摩托车官网价格
  • dede 招生网站源码自学网站建设哪个网站好
  • 工程建设信息官方网站阿里云服务器如何配置多网站
  • 网站服务器租用价格一般多少钱?编程app开发软件
  • 企业网站建驾校网站制作
  • 免费发软文的网站国外浏览器搜索引擎入口
  • 如何做qq钓鱼网站中国建筑装饰网注册用户名
  • 郑州网站建设预订个人网站网页底部模板
  • 岳阳市规划局建设工程公示网站wordpress本地环境迁移
  • 石家庄营销型网站制作学校网站的建设论文
  • 网页制作与网站设计wordpress微博同步
  • 怎么用php做网站方案中信建设有限责任公司湖南省人防设计院
  • 星宿网站建设湛江做网站咨询电话
  • 用html做的网站加背景音乐wordpress仿微信订阅主题
  • 建设部网站注册查询wordpress百度分享插件下载
  • 广州制作软件seo推广名词解释
  • 韩国网站源码下载a站是指哪个网站
  • 网站标题用空格 逗号影响seo溧水城乡建设局网站
  • 无锡网站建设推广wordpress登录的图片
  • 做公司网站的推广工作怎样第六感聊城网站建设
  • 潍坊网站建设教程济南润滑油网站制作