看完就懂Unity设计模式那些事(单例,观察者,工厂)

1.单例模式

保证一个类只有一个实例,且具有全局访问点,一般用作管理器,下面是用静态变量实现的单例

/// <summary>
/// 单例基类
/// </summary>

//<summary>:这个标签是用于代码文档生成工具的,通常在编写代码时会用来描述代码的功能、用途等。在这里,它说明下面的代码是一个单例基类。

public class Singleton<T> where T : new()
{
    static T instance;

    public static T Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new T();
            }
            return instance;
        }
        
    }
}

解释代码:

  1. public class Singleton<T> where T : new():这是一个泛型类定义,命名为 Singleton,其中 T 是一个类型参数。where T : new() 这部分表示 T 必须有一个无参数的公共构造函数,因为在后面的代码中会使用 new T() 来创建 T 类型的实例。泛型就是不知道具体是什么类型,就用T占位字符先表示,所以之后的代码逻辑,不管什么类型的参数,都执行相同的代码逻辑

  2. static T instance;:这是一个静态字段,用来保存单例实例。因为它是静态的,所以所有使用该类的实例将共享这个字段。

  3. public static T Instance { get { ... } }:这是一个静态属性,用来获取单例实例。通过这个属性可以访问单例对象。

  4. get:这是属性的访问器,用来获取属性值。在这个访问器中,如果实例还没有被创建,它会通过 new T() 来创建一个新的实例,并将其赋值给 instance,然后返回该实例。如果实例已经存在,它直接返回已有的实例。

这样设计的好处是,无论使用何种类型,只需要继承这个泛型基类,就可以轻松地创建对应类型的单例。

其他类转换为单例,ShopMgr是商店管理器,继承Singleton就转换为单例

class ShopMgr : Singleton<ShopMgr>
{
	//具体逻辑
}

2.观察者模式

观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,主要用于解耦代码

这里使用一个简单的事件管理器来演示逻辑

using System.Collections;
using System.Collections.Generic;
using UnityEngine
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值