美文网首页
Unity常用设计模式之代理模式

Unity常用设计模式之代理模式

作者: 游戏程序猿 | 来源:发表于2021-12-17 12:58 被阅读0次

什么是代理模式

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。它为其他对象提供一种代理以控制对这个对象的访问, 在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

代理模式的优点是用户都基于代理来访问服务,使得背后的服务特性可以变得非常的灵活,也可以随时可以替换服务,用户也不用管。

一个典型的设计案例了解代理模式

给大家上一个代理模式的典型的架构与设计。比如我们要开发一个视频播放器,视频播放器会涉及很多的视频格式的解码,如h264, mp4, h263等。这个时候我们就可以做一个代理,代理,代理提供视频播放器的解码视频数据的接口,用户只要调用代理这个接口,就可以将编好的视频数据,变成原始的视频数据。所以对于用户而言,都是基于代理的,不用管是mp4, h264编码。对于代理内部而言,它会根据类型,来具体使用对应的解码器,实际上是代理包含了具体的视频解码器对象来完成对应的解码,但是对外的用户不用管。如果有新的视频解码格式需要支持,那么只需要增加一个内部的对象来处理就可以了,不用动用户的接口。如图:

伪代码可以这样写

public class VideoDecoderProxy {

void RegisterVideoDecoder(int videoType, VideoDeoder decoder);

void InitWithVideoType(int videoType); // 根据视频的类型,初始化代理的具体解码者

RawImage DecodeData(byte[] videoDatas);

};

运行启动的时候:

VideoDecoderProxy proxy; //代理对象

proxy. RegisterVideoDecoder(mp4Type, mp4Decoder);

proxy. RegisterVideoDecoder(h264Type, h264Decoder);

proxy. RegisterVideoDecoder(h263Type, h263Decoder);

… 如果扩展了新的视频格式,注册一个就可以了;

//

当播放器开发者来调用视频解码库的时候,只要调用视频解码库代理的接口,

proxy. InitWithVideoType(具体类型);

每一帧的视频解码调用 proxy. DecodeData(videoDatas);

这样无论要支持多少总不同的视频格式,播放器的逻辑都不用动,只要添加新的解码库就可以了。

代理模式在游戏开发中的使用

经过上面的例子和伪代码的讲解,相信你对代理模式有了一个比较深刻的认识,接下来我们来分享一个代理模式在游戏开发设计中的经典案例。当我们开发网络游戏的时候,我们的客户端要与服务器进行通讯,而服务器分布在云端的不同的机器上,同时随着服务器部署的变化,我们也会要修改访问服务器的方式和方法。一般做这类客户端网络设计的时候,我通常会采用代理模式,把云端的每个服务抽象成代理,比如用户登录AuthProxy, 系统商城的MallProxy, 逻辑服LogicProxy。这些Proxy提供对应的服务的接口给上层的开发者来使用,如Connect, Login等,Proxy内部来实现具体的部署和通讯细节,比如AuthProx我们要连接哪里,游客登录的具体通讯协议数据是什么等。通过代理,把与游戏服务器通讯部署等的变化与上层的业务逻辑分离出来。

这样服务器的数据通讯变化,部署变化,不同的项目,都不会影响到上层的业务逻辑,只要修改服务器代理的配置就可以了。这样做到了最大限度的灵活性,把变化的东西隔离开来。

本期的Unity游戏开发代理模式就讲解到这里,关注我,继续分享更多的设计模式

相关文章

  • Unity常用设计模式之代理模式

    什么是代理模式 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型...

  • java之代理技术

    java之代理模式 直接聊技术! 描述 代理模式是常用的java设计模式,代理类主要负责为委托类预处理消息、过滤消...

  • 理解java的代理模式和动态代理

    代理模式 代理模式是23种设计模式之一,属于结构型模式。代理模式是最常见也是最常用的模式之一,只不过有很多设计模式...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 动态代理原理解析

    注:源自于Android 一、代理模式 代理模式是java23种设计模式常用的一种设计模式。代理模式是客户端不直接...

  • iOS开发中的几种设计模式

    目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景...

  • iOS开发中的几种设计模式

    目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景...

  • 2020-09-29

    目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景...

  • (IOS)设计模式

    目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景...

  • 设计模式_代理_动态代理

    1.代理模式概述 1.1什么是代理模式 ProxyPattern(即:代理模式)23种常用的面向对象软件的设计模式...

网友评论

      本文标题:Unity常用设计模式之代理模式

      本文链接:https://www.haomeiwen.com/subject/xqrifrtx.html