设计模式

设计模式

👹

开始

当一个系统明确的引用另外一个系统的同时,就会出现耦合,所以耦合是必不可少的,但是高度的耦合会使得整个系统失去重构的活性。

⭐工厂模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
工厂模式(Factory Mode)是一种创建型设计模式,它提供了一种将对象的创建和使用分离的方式。通过使用工厂模式,我们可以在不暴露对象创建逻辑的同时,让客户端获得一个需要的对象实例。在Unity中,我们可以使用工厂模式来实现对象的创建和管理,例如创建敌人、道具、玩家等游戏对象。下面是一个简单的示例:

首先,我们需要定义一个接口,用于描述我们要创建的对象类型:
public interface IObject
{
void Action();
}

然后,我们可以定义一个具体的实现类,实现该接口:
public class Enemy : IObject
{
public void Action()
{
Debug.Log("敌人攻击!");
}
}

接着,我们定义一个工厂类,用于根据不同的参数创建不同的对象实例:
public class ObjectFactory
{
public static IObject CreateObject(string objectType)
{
IObject obj = null;

switch(objectType)
{
case "Enemy":
obj = new Enemy();
break;
// 在这里可以根据需要添加更多对象类型
default:
Debug.LogError("无法创建对象:" + objectType);
break;
}
return obj;
}
}

最后,我们可以在游戏中使用工厂类来创建对象实例:
IObject obj = ObjectFactory.CreateObject("Enemy");
obj.Action();

这样,在不直接创建敌人对象的情况下,我们可以通过工厂类创建一个敌人实例,并调用其行为方法。这样的好处是,如果我们需要添加新的对象类型,我们可以直接在工厂类中添加对应的创建逻辑,而不需要修改客户端代码。

组合模式

  • 零件化
    • 把每个行为都制定成一个component,通过组合制作一个具体对象
  • GetComponent性能问题
    • 避免在Update内使用
    • 在一开始初始化

单例模式

  • 通常做各种manager
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    // 定义一个单例类
    public class Singleton
    {
    // 定义一个私有的静态字段,用于存储唯一的实例
    private static Singleton _instance;

    // 定义一个公共的静态属性,用于获取唯一的实例
    public static Singleton Instance
    {
    get
    {
    // 如果实例不存在,就创建一个新的实例
    if (_instance == null)
    {
    _instance = new Singleton();
    }
    // 返回实例
    return _instance;
    }
    }

    // 定义一个私有的构造函数,防止外部创建实例
    private Singleton()
    {
    // 初始化一些数据或逻辑
    }

    // 定义一些公共的方法或属性,供外部访问
    public void DoSomething()
    {
    // ...
    }
    }

命令模式

  • 附加好处:可以撤销命令

观察者模式

  • 是考察对 委托、事件 的应用

对象池模式

  • 空间换效率、不会造成内存碎片
作者

发布于

2023-05-20

更新于

2023-07-07

许可协议