Unity常用设计模式之工厂模式

Unity3d与设计模式(三)工厂模式 unity3d与设计模式(三) 简单工厂 工厂方法 抽象工厂 阅读详情

工厂模式是一种常用的设计模式,它属于创建型模式,用于创建对象的过程中。在Unity中,工厂模式可以帮助我们更好地管理和创建对象,提高代码的可维护性和可扩展性。接下来,我将详细介绍Unity中常用的工厂模式。

一、工厂模式概述

工厂模式是一种创建型设计模式,它提供了一个统一的接口来创建对象,而不需要指定具体的类。工厂模式将对象的创建与使用进行了解耦,使得代码更加灵活和易于维护。在Unity中,工厂模式通常用于创建游戏对象、组件等。

二、简单工厂模式

简单工厂模式是工厂模式的最简单形式,它包含一个工厂类和多个产品类。工厂类负责根据客户端的需求创建具体的产品对象。在Unity中,我们可以使用简单工厂模式来创建游戏对象或组件。


 

// 定义产品接口
public interface IProduct
{
    void Show();
}

// 具体产品类
public class ConcreteProductA : IProduct
{
    public void Show()
    {
        Debug.Log("This is Product A");
    }
}

public class ConcreteProductB : IProduct
{
    public void Show()
    {
        Debug.Log("This is Product B");
    }
}

// 工厂类
public class SimpleFactory
{
    public IProduct CreateProduct(string type)
    {
        if (type == "A")
        {
            return new ConcreteProductA();
        }
        else if (type == "B")
        {
            return new ConcreteProductB();
        }
        return null;
    }
}

// 客户端代码
public class Client
{
    void Start()
    {
        SimpleFactory factory = new SimpleFactory();
        IProduct productA = factory.CreateProduct("A");
        productA.Show();
        
        IProduct productB = factory.CreateProduct("B");
        productB.Show();
    }
}

三、工厂方法模式

工厂方法模式是一种更加灵活的工厂模式,它将工厂类抽象为一个接口,每个具体的产品类都有对应的工厂类。这样可以更容易地扩展和替换产品类。

// 定义产品接口
public interface IProduct
{
    void Show();
}

// 具体产品类
public class ConcreteProductA : IProduct
{
    public void Show()
    {
        Debug.Log("This is Product A");
    }
}

public class ConcreteProductB : IProduct
{
    public void Show()
    {
        Debug.Log("This is Product B");
    }
}

// 工厂接口
public interface IFactory
{
    IProduct CreateProduct();
}

// 具体工厂类
public class ConcreteFactoryA : IFactory
{
    public IProduct CreateProduct()
    {
        return new ConcreteProductA();
    }
}

public class ConcreteFactoryB : IFactory
{
    public IProduct CreateProduct()
    {
        return new ConcreteProductB();
    }
}

// 客户端代码
public class Client
{
    void Start()
    {
        IFactory factoryA = new ConcreteFactoryA();
        IProduct productA = factoryA.CreateProduct();
        productA.Show();
        
        IFactory factoryB = new ConcreteFactoryB();
        IProduct productB = factoryB.CreateProduct();
        productB.Show();
    }
}

四、抽象工厂模式

抽象工厂模式是工厂方法模式的扩展,它用于创建一组相关或依赖的对象。抽象工厂模式将工厂接口抽象为一个工厂族接口,每个具体的工厂类都对应一个工厂族。

// 抽象产品接口
public interface IProductA
{
    void Show();
}

public interface IProductB
{
    void Show();
}

// 具体产品类
public class ConcreteProductA1 : IProductA
{
    public void Show()
    {
        Debug.Log("This is Product A1");
    }
}

public class ConcreteProductA2 : IProductA
{
    public void Show()
    {
        Debug.Log("This is Product A2");
    }
}

public class ConcreteProductB1 : IProductB
{
    public void Show()
    {
        Debug.Log("This is Product B1");
    }
}

public class ConcreteProductB2 : IProductB
{
    public void Show()
    {
        Debug.Log("This is Product B2");
    }
}

// 抽象工厂接口
public interface IFactory
{
    IProductA CreateProductA();
    IProductB CreateProductB();
}

// 具体工厂类
public class ConcreteFactory1 : IFactory
{
    public IProductA CreateProductA()
    {
        return new ConcreteProductA1();
    }

    public IProductB CreateProductB()
    {
        return new ConcreteProductB1();
    }
}

public class ConcreteFactory2 : IFactory
{
    public IProductA CreateProductA()
    {
        return new ConcreteProductA2();
    }

    public IProductB CreateProductB()
    {
        return new ConcreteProductB2();
    }
}

// 客户端代码
public class Client
{
    void Start()
    {
        IFactory factory1 = new ConcreteFactory1();
        IProductA productA1 = factory1.CreateProductA();
        productA1.Show();

        IProductB productB1 = factory1.CreateProductB();
        productB1.Show();

        IFactory factory2 = new ConcreteFactory2();
        IProductA productA2 = factory2.CreateProductA();
        productA2.Show();

        IProductB productB2 = factory2.CreateProductB();
        productB2.Show();
    }
}

以上就是Unity中常用的工厂模式的介绍,包括简单工厂模式、工厂方法模式和抽象工厂模式。工厂模式可以帮助我们更好地组织和管理代码,提高代码的可维护性和可扩展性。在实际开发中,根据具体的需求选择合适的工厂模式来创建对象,可以让我们的代码更加灵活和易于扩展。希望以上内容对你有所帮助。

Unity设计模式—抽象工厂模式 抽象工厂模式比工厂方法模式的抽象化程度更高,它提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的类。 阅读详情

相关推荐

Unity设计模式—工厂方法模式(附代码)

是简单工厂模式的延伸,它保留了简单工厂模式优点点,同时还弥补了简单工厂的缺陷:能更好地符合开闭原则要求,在增加新的具体产品对象时无需对已有系统做任何修改。

问渠哪得清如许,为有源头活水来 615

Unity设计模式——工厂模式

在抽象工厂模式中,工厂不仅仅是一个单独的类,而是一个由多个工厂组成的层次结。首先我们定义一个工厂接口 ItemFactory,该接口包含一个用于创建道具的抽象方法 CreateItem,具体的工厂类实现该方法来创建具体的道具实例。定义一个简单工厂类 ItemFactory,该类包含一个用于创建道具的静态方法 CreateItem,根据传入的参数不同,创建不同的道具实例并返回。简单工厂模式是最基本的工厂模式,我们只需要一个工厂类,它根据客户端的请求返回一个具体的对象实例。首先我们创建一个道具的基类。

羽阿呆的博客 1359

Unity 常用设计模式

设计模式

sinat_34014668的博客 5122

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】

设计模式是指在软件开发中为解决常见问题而总结出的一套可复用的解决方案。这些模式是经过长期实践证明有效的编程经验总结,并可以在不同的项目中复用。设计模式并不是代码片段,而是对常见问题的抽象解决方案,它提供了代码结构和模块间交互的一种设计思路,帮助开发者解决特定的设计问题。设计模式的特点:通用性:设计模式针对的是软件开发中常见的设计问题,适用于各种软件工程项目。可复用性:设计模式可以在不同项目和环境下被重复使用,提高代码的可维护性和扩展性。可扩展性:设计模式有助于让代码结构更加灵活,易于扩展和修改。

仙魁XAN 1849

Unity游戏开发客户端面经——设计模式(初级)

Unity游戏开发客户端面经 之 设计模式 篇

Sea3752的博客 9429

unity项目开发中常用设计模式

本文介绍了Unity游戏开发中常用的7种设计模式及其应用场景:单例模式(全局管理)、观察者模式(事件处理)、状态模式(状态管理)、工厂模式(对象创建)、命令模式(输入操作)、组件模式(Unity核心架构)和对象池模式(性能优化)。重点对比了状态模式的两种实现方式(接口vs枚举),分析了各自的优缺点和适用场景。文章通过具体代码示例说明每种模式的实现方法,并给出模式选择建议,旨在帮助开发者构建更清晰、可维护和高效的Unity项目架构。

Evan8的博客 1257

Unity 常用设计模式之工厂模式

工厂模式(Factory Pattern)是 游戏开发中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对用户暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 先来看一个生活中的真实的案例,某个品牌的汽车制造工厂,对外提供生产这个品牌的不同型号汽车的服务。外界只要下一个”汽车型号”, 工厂可以根据型号构建出来不同型号的汽车。这样外界不用关心工厂内部是怎么运作的,当用户需要某个型号的汽车的时候调用接口就可以了,同时内部工

biliskener的博客 3496

Unity 面试篇⚠️ | 完全掌握设计模式,如同获得食神菜谱!

Unity 面试篇⚠️ | 完全掌握设计模式,如同获得食神菜谱!

m0_58523831的博客 1万+

Unity 开发中的常用设计模式(第二章第1节:工厂模式)

工厂模式的优点是,将产品族对象的产生流程整合于同一个类下实现,并提供唯一的工厂方法,让项目内的“对象产生流程”更加独立。不过,当产品族过多时,无论使用哪种方式,都会出现工厂子类数量过多或 switch case 语句过长的问题。

x2724776621的博客 2358

谷歌倾斜摄影数据获取以及转换3DTiles介绍

解析谷歌倾斜模型数据,再一键设置无人值守的情况下,快速将谷歌倾斜摄影模型数据转成3DTiles数据,并在Cesium上进行流畅漫游缩放显示,效果优于官方3DTiiles格式数据

cyber_room的博客 5335

一文掌握python图形界面开发PyQt6--(一)基本操作、控件、信号与槽、常用控件、布局管理、事件处理、文件对话框

一文掌握python图形界面开发PyQt6--(一)基本操作、控件、信号与槽、常用控件、布局管理、事件处理、文件对话框

qq_38120851的博客 4042

抽象工厂模式 java实例 tclhaier_Unity常用的设计模式_工厂模式系列之抽象工厂模式...

在工厂方法模式中,工厂只负责生产具体的产品,每一个具体的工厂对应着一个具体的产品,工厂方法也具有唯一性,如果有时候我们需要一个工厂方法提供多个产品而不是一个单一的产品,例如:海尔品牌不止生产海尔TV,还生产海尔冰箱,海尔空调等等,如果使用工厂方法模式就需要产生很多个工厂类来实现,而抽象工厂模式只需要一个工厂类即可生产一个品牌的多种产品。所以抽象工厂模式比工厂方法模式更加简单,有效率。抽象工厂模式1...

weixin_36050894的博客 229

K型热电偶分度表读取方法

K型热电偶分度表读取方法

guaizaiguaizai的博客 5892

Unity3D常见的设计模式(一)

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用 设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决 方案,这也是设计模式能被广泛应用的原因。

心疼你的一切博客 1295

保研考研机试攻略:python笔记(4)

保研考研机试攻略:python笔记(4)二分法+最大公约数+最小公倍数+素数判断+幂次方mod方法+匹配问题+哈希算法+哈夫曼编码+二叉树

qq_63349644的博客 1096

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

statistics+insight+vista+power 634

Unity 2019 游戏开发模式实用指南(一)

第一原理,克拉丽斯:简单。阅读马库斯·奥勒留斯,“对每一件特定的事情,问:它本身是什么?它的本质是什么?~汉尼拔·莱克特这句话来自我最喜欢的电影之一,总结了我的学习方法。在游戏行业工作十多年后,我发现掌握复杂系统的唯一有效方法是将其分解为其最基本的组成部分。换句话说,我试图在掌握最终形式之前理解核心成分。你会看到,在这本书中,我在呈现每个模式的方式上采取了一种非常简单的方法。目标不是堆砌主题内容,而是通过隔离每个设计模式背后的核心概念来学习,这样我们就可以观察它们并学习它们的复杂性。

龙哥盟 1246

MOSFET雪崩特性参数解析

但是,一些电源在输出短路时,初级中会产生较大的电流,加上初级电感,器件就会有雪崩损坏的可能,因此在这样的应用条件下,就要考虑器件的雪崩能量。对于那些在MOSFET的D和S极产生较大电压的尖峰应用,就要考虑器件的雪崩能量,电压的尖峰所集中的能量主要由电感和电流所决定,因此对于反激的应用,MOSFET关断时会产生较大的电压尖峰。雪崩击穿能量标定了器件可以容忍的瞬时过冲电压的安全值,其依赖于雪崩击穿需要消散的能量。EAS单脉冲雪崩击穿能量, EAS标定了器件可以安全吸收反向雪崩击穿能量的高低。

Airer_00的博客 806

Unity 中的设计模式(C#)简述

在 Unity 环境中,设计模式是游戏开发人员遇到的常见问题的通用解决方案。将它们视为解决游戏开发中特定挑战的经过验证的模板或蓝图。以下是一些简单易懂的设计模式

小云同志你好的博客 773

课程1:认识Asp.net Core Web API

本文是《.Net Core从零学习搭建权限管理系统》教程专栏的导航站(点击链接,跳转到专栏主页,欢迎订阅,持续更新…)专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。专栏适用于人群:Web后端开发人员Web API是一个很广泛的概念,Asp.net Core Web API是.NET框架用于创建RESTful风格的项目、用于轻松构建可供多个客户端访问的HTTP服务。1、支持RestFul风格编程;

成长的足迹 1256

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Unity 中常见的开发设计模式

单例模式是一种常见的设计模式,它确保一个类只有一个实例,并提供全局访问点来访问该实例。工厂模式是一种常见的设计模式,它将对象的创建委托给一个工厂类,从而使客户端代码与具体类的实例化分离。观察者模式是一种常见的设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有观察者都会收到通知并更新。委托模式是一种常见的设计模式,它使用委托对象来代表函数,并将其作为参数传递给其他函数。这样可以将代码组织成更小的模块,使其更易于维护和重用。

qq_20179331的博客 2412

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Unity技术专题】Unity中常用的设计模式总结

浅谈Unity中常见的设计原则 单例模式 工厂模式 建造者模式 原型模式 桥接模式 适配器模式 装饰模式 组合模式 享元模式 外观模式 代理模式 模版模式 策略模式 状态模式 观察者模式 备忘录模式 中介者模式 命令模式 访问者模式 职责链模式 迭代器模式 解释器模式 【特】游戏编程模式 【特】重访设计模式 架构模式:MVC与MVVM 简述21种设计模式 设计模式看了又忘,忘了又看? Unity/C#基础复习(5) 之 浅析观察者、中介者模式在...

yhx956058885的博客 661

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

游戏开发设计模式概况

首先需要有一个State接口,该接口包含角色所有的操作,并且包含一个状态机。通过这种方式,可以将状态和行为封装成对象,从而实现角色状态的转换。

🌟【AI炼丹师 | 你的数字技术搭子】 大二解锁3200+道友同行👾 1512
上一篇: 屏幕后处理之睁眼闭眼特效
下一篇: RTS游戏核心技术 流场寻路算法详解
Unity_RAIN
博客等级 码龄4年 409粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值