游戏开发中常用的设计模式 【game design patterns】

体育365 2025-10-07 07:00:53 阅读: 4179

单例模式(Singleton Pattern):用于确保在游戏中只存在一个实例,例如游戏管理器(Game Manager)或资源管理器(Resource Manager)。

工厂模式(Factory Pattern):用于创建对象实例,例如创建不同类型的敌人(Enemy)或武器(Weapon)。

观察者模式(Observer Pattern):用于实现对象间的事件通知,例如实现角色(Character)与任务(Quest)的交互。

状态模式(State Pattern):用于管理游戏中对象的状态转换,例如角色在游戏中的状态(生命值、能量等)。

策略模式(Strategy Pattern):用于实现不同的算法和行为,例如实现不同的AI(Artificial Intelligence)策略。

组合模式(Composite Pattern):用于创建和管理游戏中的复杂对象结构,例如实现游戏中的菜单(Menu)或场景(Scene)。

命令模式(Command Pattern):用于将操作(操作)与其执行分离,例如实现游戏中的键盘快捷键。

装饰器模式(Decorator Pattern: 通过创建一个包装对象,即装饰器,来包裹真正的对象,并且在保持接口的前提下,为它提供额外的功能。

Factory Pattern 工厂

工厂模式 (Factory Pattern) 是一种常用的设计模式,用于创建对象,它能够隐藏创建对象的复杂性,并且使代码更加灵活。在游戏开发中,工厂模式通常用于创建游戏对象、敌人、道具等。

//首先我们定义一个接口,表示我们要创建的对象:

public interface IGameObject

{

void Update();

}

//创建具体的游戏对象类:

public class Player : IGameObject

{

public void Update()

{

Console.WriteLine("Player is updating.");

}

}

public class Enemy : IGameObject

{

public void Update()

{

Console.WriteLine("Enemy is updating.");

}

}

//创建一个工厂类,用于创建游戏对象

public class GameObjectFactory

{

public IGameObject CreateGameObject(string type)

{

switch (type)

{

case "Player":

return new Player();

case "Enemy":

return new Enemy();

default:

throw new ArgumentException($"Invalid game object type: {

type}");

}

}

}

//使用工厂类来创建游戏对象:

GameObjectFactory factory = new GameObjectFactory();

IGameObject player = factory.CreateGameObject("Player");

player.Update(); // Output: "Player is updating."

IGameObject enemy = factory.CreateGameObject("Enemy");

enemy.Update(); // Output: "Enemy is updating."

Singleton Pattern 单例

单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供全局访问点。在游戏开发中,单例模式通常用于管理全局状态、资源池等。

public class GameManager

{

private static GameManager _instance;

// 私有构造函数,确保只能在类内部创建实例

private GameManager()

{

// 初始化游戏管理器

Console.WriteLine("GameManager initialized.");

}

// 全局访问点

public static GameManager Instance

{

get

{

if (_instance == null)

{

_instance = new GameManager();

}

return _instance;

}

}

// 游戏管理器的功能

public void StartGame()

{

Console.WriteLine("Game started.");

}

}

GameManager gameManager = GameManager.Instance;

gameManager.StartGame(); // Output: "Game started."

GameManager gameManager2 = GameManager.Instance; // 和 gameManager 引用同一个对象

Observer Pattern 观察者

观察者模式是一种常用的设计模式,用于在对象之间建立一种一对多的依赖关系,当一个对象的状态发生改变时,其它依赖于它的对象都会得到通知并自动更新。在游戏中,观察者模式常常被用来实现游戏中各种实体之间的交互。

public interface IObserver

{

void OnNotify();

}

public class Subject

{

private List observers = new List();

public void AddObserver(IObserver observer)

{

observers.Add(observer);

}

public void RemoveObserver(IObserver observer)