桥接模式

前言

这篇文章介绍Untiy中一套动作通用多个模型原理和画图软件一些模块原理,桥接模式就这样登场了。

 1.Unity引擎中的桥接模式

我们先看一下Unity中的一套动作通用多个模型原理,用过的大佬知道使用这个功能是有限制的,首先需要把模型改成Humanoid ,然后还要配置模型的手,脚,头等等的位置,才可以使用动作,具体的设置过程如图下:

显示为节点全部绿色以后,说明节点配置成功。然后我们就可以对人物相关的动作进行复用了,接下来我们思考一下Unity是如何实现如此神奇功能,我们先定义一个亚索模型类,具体代码如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace BridgePattern
{
    public abstract class Model
    {
        protected ActionApi actionApi;
        protected Model(ActionApi actionApi){
            this.actionApi = actionApi;
        }
        public abstract void executeAction();
    }

    public class Yasuo : Model
    {
        private int FbxId;

        public Yasuo(int FbxId,ActionApi actionApi):base(actionApi)
        {
            this.FbxId = FbxId;
        }

        public override void executeAction()
        {
            actionApi.executeAction(FbxId);
        }
    }
}

然后接下来实现一些动作的类。比如攻击动作,防御动作,具体代码如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace BridgePattern
{
    public interface ActionApi
    {
        void executeAction(int FbxId);
    }

    public class AtkActionApi : ActionApi
    {
        public void executeAction(int FbxId)
        {
            Console.WriteLine("模型->" + FbxId + "执行攻击");
        }
    }

    public class DefActionApi : ActionApi
    {
        public void executeAction(int FbxId)
        {
            Console.WriteLine("模型->" + FbxId + "执行防御");
        }
    }

}

我们可以发现游戏的数据层和动作层就完全分离了,这个设计模式很棒,当我们不用桥接模式的时候就知道此模式的优秀之处,接下来就不用桥接模式去实现相同的功能。

2.不使用桥接模式会发生什么?

我们首先将亚索类进行重写,具体代码如下:

    public class Yasuo : Model
    {
        private int FbxId;

        public Yasuo(int FbxId)
        {
            this.FbxId = FbxId;
        }

        public void executeAtkAction()
        {
            Console.WriteLine("模型->" + FbxId + "执行攻击");
        }

        public void executeDefAction()
        {
            Console.WriteLine("模型->" + FbxId + "执行防御");
        }
    }

这个真是一个糟糕的方案,在亚索模型下实现executeAtkAction和executeDefAction。以后每一种模型都提供一套动作,不管动作是否可以通用,对比发现桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量。

总结

1.桥接模式的优缺点

1)缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

2)优点:符合高内聚低耦合的设计,系统扩展也更为方便,抽象和实现的分离。

2.桥接模式的使用场景

1)一些绘图软件中形状和颜色的分离设计。

2)游戏中的一套动作复用多个模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值