位置: 编程技术 - 正文

设计模式--工厂方法模式在unity3d里面的使用(设计模式工厂模式使用场景)

编辑:rootadmin

推荐整理分享设计模式--工厂方法模式在unity3d里面的使用(设计模式工厂模式使用场景),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:设计模式工厂模式案例,设计模式工厂方法模式,设计模式工厂方法实例代码,设计模式工厂模式使用场景,设计模式工厂模式使用场景,设计模式工厂模式详解,设计模式工厂模式详解,设计模式工厂方法模式,内容如对您有帮助,希望把文章链接给更多的朋友!

设计模式--工厂方法模式在unity3d里面的使用(设计模式工厂模式使用场景)

来自 抽象工厂角色Creator:是工厂方法模式的核心,与应用程序无关。在此模式中创建的对象的工厂类必须实现这个接口。2) 具体工厂角色ConcreteCreator:这是实现抽象工厂接口的具体工厂类,包含于应用程序密切相关的逻辑,并且由应用程序调用来创建产品对象。3) 抽象产品角色Product:工厂方法模式所创建的对象的基类型或接口,也就是产品对象的共同父类或共同拥有的接口。4) 具体产品角色ConcreteProduct:这个角色实现了抽象产品角色所定义的接口。具体的产品有专门的具体工厂创建,他们之间往往一一对应。修炼工厂方法模式的武功套路如下: (备注:上面是工厂方法模式demo里面的定向关系图文档的截图!)修炼心法与武功套路的对应:1) 抽象工厂角色Creator对应武功套路里面的CreatorResourceFactory。2) 具体工厂角色ConcreteCreator对应武功套路里面的UIResourceManagerFactory和AudioResourceManagerFactory。3) 抽象产品角色Product对应武功套路里面的ResourceManager。4) 具体产品角色ConcreteProduct对应武功套路里面的UIResourceManager和AudioResourceManager。上面描述了工厂方法模式的修炼心法和武功套路。下面就给出具体的套路细节。建议:看下面代码之前,可以先根据工厂方法模式的心法及对应的武功套路先行修炼。抽象工厂角色:using unityEngine;using System.Collections;namespace FactoryMethod{ /// <summary> /// 简单方法模式的抽象工厂,由具体工厂来继承实现 /// </summary> public abstract class CreatorResourceFactory { public abstract ResourceManager CreateFactory(); }}具体工厂角色:音频资源管理工厂using UnityEngine;using System.Collections;namespace FactoryMethod{ /// <summary> /// 简单方法模式里面的具体产品-音频资源管理工厂 /// </summary> public class AudioResouceManagerFactory : CreatorResourceFactory { public override ResourceManager CreateFactory() { return new AudioResouceManager(); } }}UI资源管理工厂using UnityEngine;using System.Collections;namespace FactoryMethod{ /// <summary> /// 简单方法模式里面的具体产品工厂-UI资源管理工厂 /// </summary> public class UIResouceManagerFactory : CreatorResourceFactory { public override ResourceManager CreateFactory() { return new UIResourceManager(); } }}抽象产品角色:using UnityEngine;using System.Collections;namespace FactoryMethod{ /// <summary> /// 工厂方法模式的抽象产品类,由具体的产品类继承实现 /// </summary> public abstract class ResourceManager { public abstract void LoadConfig(string path); public abstract void LoadAsset(string name); public abstract void UnLoadResource(bool status); }}具体产品角色:音频资源产品using UnityEngine;using System.Collections;namespace FactoryMethod{ /// <summary> /// 工厂方法模式抽象产品的具体产品实现-音频资源管理产品类 /// </summary> public class AudioResouceManager : ResourceManager { public override void LoadConfig(string path) { Debug.Log("加载和音乐有关的配置文件"); } public override void LoadAsset(string name) { Debug.Log("加载音乐文件"); } public override void UnLoadResource(bool status) { Debug.Log("卸载加载的音乐文件"); } }}UI资源产品using UnityEngine;using System.Collections;namespace FactoryMethod{ /// <summary> /// 工厂方法模式抽象产品的具体产品实现-音频资源管理产品类 /// </summary> public class UIResouceManager : ResourceManager { public override void LoadConfig(string path) { Debug.Log("加载UI有关的配置文件"); } public override void LoadAsset(string name) { Debug.Log("加载UI文件"); } public override void UnLoadResource(bool status) { Debug.Log("卸载加载的UI文件"); } }}客户端测试类:using UnityEngine;using System.Collections;namespace FactoryMethod{ public class ResouceFactoryMethodClient : MonoBehaviour { #region 定义具体产品工厂 CreatorResourceFactory audioFactory; CreatorResourceFactory uiFactory; #endregion #region 定义具体产品 AudioResouceManager audioManager; UIResourceManager uiManager; #endregion void Start() { audioFactory = new AudioResouceManagerFactory(); uiFactory = new UIResouceManagerFactory(); } void OnGUI() { if (GUILayout.Button("音乐管理器")) { audioManager = audioFactory.CreateFactory() as AudioResouceManager; audioManager.LoadConfig("http:...."); audioManager.LoadAsset("蛮牛"); audioManager.UnLoadResource(false); } if (GUILayout.Button("界面管理器")) { uiManager = uiFactory.CreateFactory() as UIResourceManager; uiManager.LoadConfig("http:...."); uiManager.LoadAsset("蛮牛"); uiManager.UnLoadResource(false); } } }}搞懂了上面的武功心法和武功套路,你也就领悟了工厂方法模式。在上篇文章中,野猪也提到过,每种武功都有他的优缺点和解决问题的侧重点。So,请往下看:工厂方法模式的优缺点:优点:1) 工厂方法模式通过OOP中的多态性将对象的创建延迟到具体工厂中,从而解决了简单工厂模式存在的问题,也很好的符合了开放封闭原则-OCP(即对扩展开放,对修改封闭)。2) 子类提供挂钩。基类为工厂方法提供默认实现,子类可以重写,也可以继承父类的实现。3) 连接并行的类层次结构 。4) 良好的封装性,代码结构清晰。5) 屏蔽产品类。产品类的实现如何变化,调用者都不需要关心,只需关心产品的接口,只要接口保持不变,系统中的上层模块就不会发生变化。6) 典型的解耦框架。高层模块只需要知道产品的抽象类,其他的实现类都不需要关心,符合迪米特法则,符合依赖倒置原则,符合里氏替换原则。7) 扩展性好,在增加产品类的情况下,只需要修改具体的工程类或扩展一个工程类,就可以“拥抱变化”。缺点:每次增加一个产品时,都需要增加一个具体类和对应的具体工厂,这样使系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。在这里野猪先给大家提一个醒,GoF设计模式里面的每种模式都是针对某类特定问题的解决策略。So,没有什么设计模式是完美的!好了,工厂方法模式就讲到这里。敬请期待如何修炼抽象工厂模式。

unity打包位出错 目前不支持位的Unity函数有NetworkViewNetworkBitStreamPing去掉unity调用的这些函数即可。

Unity通过inspector设置属性 Unity允许你使用[SerializeField]序列化私有变量.使用新的[SetProperty]特性可以通过Unityinspector来设置一个公开的属性。[SerializeField,SetProperty("Number")]privatefloatnu

【Unity】常用脚本类的继承关系(入门篇) 前言学习Unity开发引擎的初学者会接触大量的脚本类,而这些类之间的关系往往容易被忽略。本文对Unity引擎开发中的一些常用类及其关系进行了简单的

标签: 设计模式工厂模式使用场景

本文链接地址:https://www.jiuchutong.com/biancheng/375753.html 转载请保留说明!

上一篇:Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)(unity图集)

下一篇:unity打包64位出错

  • 购销合同印花税最新政策2023
  • 转让不动产销项税
  • 一般纳税人公司转让一般卖多少钱
  • 坏账计提坏账准备
  • 处置投资性房地产的损益怎么算
  • 账本一般保存几年就可以销毁2004年的规定
  • 资产损失税前扣除是什么意思
  • 购进客房用品取得增值税专用发票注明税额9120
  • 业务招待费的进项怎么算
  • 商品溢余做销售的会计分录怎么写?
  • 事业单位乱报销出纳怎么办?
  • 出口发票税率为0还能退税吗
  • 公司拖欠工资还要继续工作吗?
  • 营改增后房产税计税依据 土地价款
  • 劳务费发票可以含材料费吗
  • 销售佣金税点
  • 餐饮消费,碰到商家不愿意开发票怎么办?
  • 进项税额转出会计分录月末如何结转
  • 2019一般纳税人和小规模纳税人的区别
  • 固定资产注资后怎么做账
  • 股权投资涉税问题
  • 员工福利专票分录
  • 发出的货物可以要求退回吗
  • 建筑单位领用材料分录
  • 软件开发怎么做会计分录
  • 总公司中标分公司结算可以吗
  • 企业计提房产税的会计处理正确的是
  • 如何使用windows的记事本创建文件
  • 公司资产报废处理请示
  • 苹果手机送修了会给备用机吗
  • 什么是原始凭证?审核原始凭证主要审查哪些内容?
  • 电脑前面板耳机没声音怎么设置bios
  • 营改增后甲供材的账务处理
  • 直布罗陀巨岩山
  • laravel实现登录注册
  • java项目报错
  • thinkphp框架的作用
  • 以我为主题画一幅画
  • php实现支付宝支付
  • phpcms v9官网
  • 银行利息增值税发票
  • 企业交的社保包含什么
  • 税控盘没交年费会怎么办
  • 进项税抵增值税
  • access使用查询向导固定常数
  • 公司购买食品如何入账科目
  • 关联方计提坏账准备如何规定
  • 企业记账的相关规定
  • 多缴附加税退税怎么做账
  • 坏账准备计提要求
  • 美元利息结汇时结汇项目是什么
  • 企业房产税优惠政策2023
  • 增值税可以退吗
  • 账实不符怎么调账
  • 企业多结转的成本跨年怎么冲回?
  • 小规模纳税人季报网上申报流程
  • 新手会计做账怎么做账
  • 库存商品记账
  • 商品流通企业会计第三版答案倪明辉
  • 在第一周
  • mysql修改默认端口方法
  • mac应用图标不见了怎么办
  • 苹果电脑怎么截屏按哪个键
  • centos6.5如何安装
  • windows7右下角网络图标不见了怎么办
  • win7累计更新补丁包
  • win10系统应用和功能中不能卸载
  • .android
  • android应用程序开发的流程
  • pythonreduce函数的作用
  • nodejs开发文档
  • js响应事件的过程
  • javascript函数大全
  • 学完js不会用怎么办
  • python flask
  • python调用ch
  • 一般纳税人开具的增值税普通发票和专用发票的区别
  • 广东省国家税务总局班子成员
  • 西安12345官网登录入口二维码
  • 定期定额个体工商户需要做账吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设