桥接模式(Bridge)//此系列的文章仅用于个人笔记整理所用,欢迎各位大佬帮忙指正,鞠躬

  • 什么是桥接模式/桥接模式有什么用?

桥接模式(Bridge)是一种,让多个同类型的类与多个另外的同类型的类相互交互的一种编程模式,好处在于,抽象层与实现层可以分离,使用时,一方的抽象层可以选择调用另一方的抽象层,降低了程序的耦合性,并提高了程序的可移植性。

简单说就是,将两个类的精华部分,或者说,将两个种类的类各自都会相互交互的类提炼出2个抽象类,然后让抽象类之间进行方法调用。

用途当交互的双方都会进行扩展的时候,就需要使用桥接模式来规划(整理)这两个类

那 上我们的栗子:

下图是韩国网游 地下城与勇士中 魔法师的四种分支职业

从左起依次是 魔道学者/元素师/召唤师/战斗法师

下图是魔法师这个职业可以装备的大量武器

魔法师职业可以使用的各色武器

组合而成的话,就会变成这种样子

咳咳,图片中的内容就不要计较了

具体的做法是,先写一个抽象的框出来,

上面写着武器的装备属性,武器的外观,如何做出武器的攻击动作了,武器具体出现的位置了之类的参数与方法,然后让其他武器继承刚才我们写出的抽象的框,

这样我们就可以通过继承的方式来大量创建新武器。

我们再写一个魔法师职业的抽象的框,上面写着魔法师如何做出各种技能的动作的方法等等,与上面类似,

这样我们也可以通过继承的方式创建大量的职业类。

这样我们就获得了两个类型的类(一个是魔法师职业,一个是武器的类)

为了让魔法师职业释放技能动作的时候,武器 能同时调用自身的武器攻击的动作的方法,我们就需要桥接模式的辅助,来让两个抽象的层能相互交流的同时,减少程序的耦合性,并提高程序的可扩展性。

假设我们不提取出两个种类类的抽象层,直接让武器与对应的职业相互交流的话,在前期的时候,看似很直接,不拐弯抹角,但你的项目一旦变大,你的两个种类的类将会成倍的出现程序超高耦合的情况,这种情况已经算是织网了好吧╮(╯-╰)╭

  • 桥接模式(Bridge)的核心写法/如何写一个桥接模式?

1、写两个种类的类的各自的抽象层

2、让其中一个抽象层创建一个另一个抽象类的实例,并在第一个抽象层中创建可以给此实例赋值的Set方法

            public abstract class IWuqi武器{protected int gongjili攻击力;public virtual void PlayAnimator棍棒攻击(string sting){//播放武器动画}public virtual void PlayerAnimator横向劈砍(){//播放横向劈砍的武器动画}}public abstract class IZhiyeMofashi魔法师职业{protected string zhiyeming职业名;protected IWuqi武器 nowWuqi当前武器;public void SetNowWuqi设置当前武器(IWuqi武器 wuqi){nowWuqi当前武器 = wuqi;}public virtual void xxx技能(){//释放xxx技能时,角色的默认动画nowWuqi当前武器.PlayAnimator棍棒攻击("xxx");}}

3、让两个种类的类继承各自的抽象层

            public class Wuqi牧童之慌狼来了 : IWuqi武器{public override void PlayAnimator棍棒攻击(string sting){//当前武器的攻击动作}}public class Wuqi荒古遗尘法杖 :IWuqi武器{public override void PlayAnimator棍棒攻击(string sting){//当前武器的攻击动作}}public class ZhiyeMofashi元素师:IZhiyeMofashi魔法师职业{public override void xxx技能(){//当前职业释放xxx技能时的技能动画base.xxx技能();}}public class ZhiyeMofashi战斗法师 : IZhiyeMofashi魔法师职业{public override void xxx技能(){//当前职业释放xxx技能时的技能动画base.xxx技能();nowWuqi当前武器.PlayerAnimator横向劈砍();}}

4、使用时,其中一个抽象层去调用另一个抽象层中的方法,以达到抽象和实例分离的目的。

    public IWuqi武器 wuqi;public IZhiyeMofashi魔法师职业 zhiyeMofashi;private void Awake(){wuqi = new Wuqi牧童之慌狼来了();zhiyeMofashi = new ZhiyeMofashi战斗法师();zhiyeMofashi.SetNowWuqi设置当前武器(wuqi);}void Start () {zhiyeMofashi.xxx技能();}

设计模式 之 桥接模式 //依旧是游戏中的例子来解释设计模式相关推荐

  1. 设计模式 之 状态模式//用游戏中的例子解释设计模式

    此类型的博客的写作初衷在于,整理自己平时所学的知识,随时欢迎各路大神指正 //绿色字的内容为注释 什么时候使用状态模式/状态模式有什么用? 官方的说法是,当对象有很明确的状态划分的时候:  1.一个对 ...

  2. java 设计模式之桥接模式,策略模式

    java 设计模式之桥接模式,策略模式 1.引出设计模式 相信大家都玩过王者荣耀这款游戏.我们知道现在大概有九十多个英雄且各自技能及背景故事.台词.被动都不一样而且还带着召唤师技能比如实现,惩戒,弱化 ...

  3. java桥接和装饰_设计模式:桥接模式和装饰模式

    原标题:设计模式:桥接模式和装饰模式 一.桥接模式简介 1.基础描述 桥梁模式是对象的结构模式.又称为柄体(Handle and Body)模式或接口(Interface)模式.桥梁模式的用意是&qu ...

  4. C++设计模式之桥接模式

    这篇文章主要介绍了C++设计模式之桥接模式,本文讲解了什么是桥接模式.为什么要使用桥接模式.什么时候使用桥接模式等内容,需要的朋友可以参考下 问题描述 现在要去画一个图形,图形有长方形.圆形和扇形等等 ...

  5. php设计模式之桥接模式

    php设计模式之桥接模式 一.概述 桥接模式:将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果. 其实就是讲不相关的东西通过类(本例中是SendInfo)结合在一起,从而 ...

  6. java 懒加载模式_JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载

    我写的程序员面试系列文章 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Jav ...

  7. 详解设计模式:桥接模式

    桥接模式(Bridge Pattern)也称为桥梁模式.接口模式或者柄体模式,有点像适配器模式,也是 GoF 的 23 种设计模式中的一种结构型设计模式. 桥接模式 是用于把抽象化与实现化解耦,使得二 ...

  8. 设计模式之桥接模式详解

    设计模式之桥接模式详解 文章目录 设计模式之桥接模式详解 一.什么是桥接模式 二.桥接模式的应用场景 三.桥接模式的角色组成 四.桥接模式通用写法示例 五.桥接模式优缺点 一.什么是桥接模式 桥接模式 ...

  9. 如何让孩子爱上设计模式 ——10.桥接模式(Bridge Pattern)

    如何让孩子爱上设计模式 --10.桥接模式(Bridge Pattern) 标签: 设计模式初涉 我有故事,你有酒吗?这年头写个技术文不讲个故事都不行,行,我讲: 还有发现很多的技术博文都开始有喜欢往 ...

最新文章

  1. 技术是最求 买卖是境界
  2. LeetCode Sudoku Solver
  3. python怎么反转单链表_单链表反转python实现代码示例
  4. kaggle研究生招生(中)
  5. cmake编译mysql常用参数
  6. dataframe for循环 筛选_Python循环12种超强写法,又快又省内存
  7. 驱动中的C语言----指针与指针初使化
  8. ASP.NET 英语词典
  9. poj3274 找平衡数列(哈希加一点数学思维)
  10. 计算机无法连接此设备,[修复]目前,此硬件设备未连接到计算机(代码45) | MOS86...
  11. vm16安装efi win7 方案
  12. 2019黑马python吾爱_最新Python黑马头条推荐系统项目视频教程
  13. c语言乘方程序,C语言求幂计算的高效解法
  14. Android深入浅出系列课程---Lesson7 LLY110426_Android系统启动
  15. 北京理工大学-嵩天python语言程序设计-9-Python计算生态概览
  16. 每天一个开发小技巧~
  17. flask 发送新浪邮箱邮件
  18. CodeForces 135C C. Zero-One
  19. 鸿蒙系统电视评测,荣耀智慧屏体验评测:电视只是小功能,鸿蒙系统才是真亮点...
  20. python魔法方法详解_Python魔术方法详解

热门文章

  1. 前沿重器[10] | bert语义空间的思考
  2. 阴阳师模拟抽卡[含源码]
  3. Linux ps、top、free、uname命令
  4. sort排序函数用法
  5. 高性能远程桌面Splashtop 居家办公首选软件
  6. 计算机专业学习的核心是什么?
  7. 灵飞经3 印神无双 第十四章 印神古墓 2
  8. iapp启动图代码_GTA5新的R*启动器出现问题之应对方法
  9. 期货策略matlab,精选股票、期货量化投资策略系列(一)基于Matlab
  10. Eclipse取消窗口置顶