首页 > 其他分享 >Unity常用设计模式之工厂模式

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

时间:2024-02-19 11:58:10浏览次数:28  
标签:常用 Show class 工厂 Unity void 设计模式 public IProduct

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

   

标签:常用,Show,class,工厂,Unity,void,设计模式,public,IProduct
From: https://www.cnblogs.com/rainy1unity/p/18020763

相关文章

  • [设计模式]创建型模式-单例模式
    前言单例模式是最简单的一种模式。在Go中,单例模式指的是全局只有一个实例,并且它负责创建自己的对象。单例模式有减少内存和系统资源开销、防止多个实例产生冲突等优点。因为单例模式保证了实例的全局唯一性,并且只被初始化一次,所以比较适合全局共享一个实例,且只需要被初始化一次......
  • Unity UGUI的DrawCall优化
    UnityUGUI是一种强大的用户界面设计工具,它可以帮助开发者快速创建各种界面元素,从按钮和文本到滑块和面板等。然而,在使用UGUI时,一个常见的性能瓶颈就是DrawCall过多导致的性能下降。在本文中,我们将深入探讨UGUI的DrawCall优化方法,并给出对应的代码实现。什么是DrawCall?在Unity......
  • Unity红点系统的架构与设计
    在游戏开发中,红点系统是一种常见的功能,用于提示玩家有未读消息或待处理任务。在Unity引擎中,我们可以使用脚本来实现红点系统,下面我将介绍一种基于Unity的红点系统的架构与设计,并给出对应的代码实现。红点系统的代码实现首先,我们需要创建一个红点管理器的脚本RedDotManager.cs,......
  • 一、在树莓派上学习C#和Linux:常用指令和软件包管理
    在树莓派上学习C#和Linux:常用指令和软件包管理最近AI特别火,就想在空余时间系统性的学习一下Linux中使用C#操作硬件开发。选择了树莓派平台入手学习。它是一款小巧的单板计算机,运行基于Linux的操作系统。学习Linux命令是管理和使用树莓派的关键一步。这篇博客记录一些常用的Linux......
  • 常用算法
    最长递增子序列长度给你一个整数数组nums,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。 解题思路:找出序列中最长子序列的长度1.动态规划法 ......
  • [设计模式]行为型模式-策略模式
    前言策略模式定义了一系列算法,并将每个算法封装起来,使它们可以互相替换,且算法的变换不会影响使用算法的客户。在项目开发中,我们经常要根据不同的场景,采取不同的措施,也就是不同的策略。假设我们需要对a、b这两个整数进行计算,根据条件的不同,需要执行不同的计算方式。我们可以把所......
  • Unity常用设计模式之代理模式
    代理模式是一种常用的设计模式,它允许一个对象代表另一个对象进行访问。在Unity中,代理模式经常被用来控制对某些对象的访问,以便在访问对象的同时进行一些额外的操作,比如权限控制、缓存、日志记录等。代理模式的结构包括三个角色:抽象主题(Subject)、真实主题(RealSubject)和代理(Proxy)。......
  • 常用的MODBUS协议测试工具推荐
    介绍一些常用的MODBUS测试工具。1、ModscanModscan是一款免费的MODBUS测试工具,支持ModbusRTU和TCP和ASCII协议。它可以进行单点和多点的读写操作,并且可以生成MODBUS协议相关的报告。还支持模拟器模式,使用户可以通过虚拟设备对ModBus进行测试。2、CASModbusS......
  • Unity 2022.3.20f1新功能,异步实例化预制体Object.InstantiateAsync
    今天查看Unity2022.3.20f1更新日志,发现新增了个异步实例化的功能,这个功能解决了Unity历史上实例化预制体卡顿的痛点,简直不要太爽。具体的API文档请点击跳转。做了个简单的实例化测试,实例化500*500个Cube,耗时9.2s。实例化过程之间不会卡顿,可以做其他事情,即便是在重度游戏加载场......
  • Unity框架设计系列:Unity 如何设计网络框架
    在Unity框架设计中与游戏服务器对接的网络框架也是非常重要的一个模块,本文給大家分享如何来基于Unity来设计一个网络框架,主要的讲解以下几个点:(1)TCP半包粘包,长连接与短连接,IO阻塞;(2)TcpSocket与UDPSocket的技术方案;(3)Unity的序列化与反序列化技术方案;(4)TCP的......