创建类模式总结篇

原文链接:https://blog.csdn.net/zhengzhb/article/details/7393557
作者:割韭韭

原文博主总结得很好,所以搬过来存档,方便日后查询

创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户端可以直接得到对象,而不用去关心如何创建对象。创建类模式有5种,分别是:

  1. 单例模式:用于得到内存中的唯一对象。
  2. 工厂方法模式:用于创建复杂对象。
  3. 抽象工厂模式:用于创建一组相关或相互依赖的复杂对象。
  4. 建造者模式:用于创建模块化的更加复杂的对象。
  5. 原型模式:用于得到一个对象的拷贝。

为什么需要创建性模式

首先,在编程中,对象的创建通常是一件比较复杂的事,因为,为了达到降低耦合的目的,我们通常采用面向抽象编程的方式,对象间的关系不会硬编码到类中,而是等到调用的时候再进行组装,这样虽然降低了对象间的耦合,提高了对象复用的可能,但在一定程度上将组装类的任务都交给了最终调用的客户端程序,大大增加了客户端程序的复杂度。采用创建类模式的优点之一就是将组装对象的过程封装到一个单独的类中,这样,既不会增加对象间的耦合,又可以最大限度的减小客户端的负担。

其次,使用普通的方式创建对象,一般都是返回一个具体的对象,即所谓的面向实现编程,这与设计模式原则是相违背的。采用创建类模式则可以实现面向抽象编程。客户端要求的只是一个抽象的类型,具体返回什么样的对象,由创建者来决定。

再次,可以对创建对象的过程进行优化,客户端关注的只是得到对象,对对象的创建过程则不关心,因此,创建者可以对创建的过程进行优化,例如在特定条件下,如果使用单例模式或者是使用原型模式,都可以优化系统的性能。

总结

所有的创建类模式本质上都是对对象的创建过程进行封装。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到使用Unity创建游戏时,观察者模式是一个非常有用的设计模式,它可以帮助我们处理游戏中的事件和消息。在这技术文档中,我们将介绍观察者模式的概念以及如何在Unity中使用它。 ## 什么是观察者模式? 观察者模式是一种设计模式,用于处理对象之间的事件和消息。在该模式中,对象被分为两:观察者和主题。观察者是需要接收主题事件或消息的对象,而主题是将事件或消息发送给观察者的对象。 使用观察者模式,我们可以将游戏中的事件和消息分离开来。这使得我们可以更容易地处理游戏中的逻辑,并且可以让我们的代码更加模块化和可维护。 ## 在Unity中使用观察者模式 在Unity中,我们可以使用C#的委托和事件来实现观察者模式。以下是一个简单的示例,展示了如何在Unity中使用观察者模式。 ### 创建主题 首先,我们需要创建一个主题来处理事件和消息的发送。在这个示例中,我们将创建一个名为`GameEventManager`的,它将负责发送游戏中的事件。 ```csharp public class GameEventManager : MonoBehaviour { public delegate void GameEvent(); public static event GameEvent OnGameStart; public static event GameEvent OnGameEnd; public void StartGame() { if(OnGameStart != null) { OnGameStart(); } } public void EndGame() { if(OnGameEnd != null) { OnGameEnd(); } } } ``` 在这个中,我们定义了两个事件:`OnGameStart`和`OnGameEnd`。我们还定义了两个方法:`StartGame()`和`EndGame()`,它们将调用相应的事件。 ### 创建观察者 接下来,我们需要创建一个观察者来处理事件和消息的接收。在这个示例中,我们将创建一个名为`GameUIManager`的,它将负责接收游戏中的事件并更新UI。 ```csharp public class GameUIManager : MonoBehaviour { void Start() { GameEventManager.OnGameStart += HandleGameStart; GameEventManager.OnGameEnd += HandleGameEnd; } void HandleGameStart() { // 在这里更新UI,显示“游戏开始”的文本和按钮等等 } void HandleGameEnd() { // 在这里更新UI,显示“游戏结束”的文本和按钮等等 } void OnDestroy() { GameEventManager.OnGameStart -= HandleGameStart; GameEventManager.OnGameEnd -= HandleGameEnd; } } ``` 在这个中,我们使用委托和事件来订阅`GameEventManager`中的事件。我们在`Start()`方法中订阅事件,并在`HandleGameStart()`和`HandleGameEnd()`方法中处理相应的事件。 为了避免内存泄漏,我们在`OnDestroy()`方法中取消订阅事件。 ### 发送事件 最后,我们需要在游戏中发送事件。在这个示例中,我们将使用`GameEventManager`的`StartGame()`和`EndGame()`方法来发送事件。 ```csharp public class GameManager : MonoBehaviour { void Start() { GameEventManager gameEventManager = FindObjectOfType<GameEventManager>(); gameEventManager.StartGame(); } void Update() { if(Input.GetKeyDown(KeyCode.Escape)) { GameEventManager gameEventManager = FindObjectOfType<GameEventManager>(); gameEventManager.EndGame(); } } } ``` 在这个中,我们在`Start()`方法中发送`OnGameStart`事件,并在`Update()`方法中检测玩家是否按下了“Escape”键。如果按下了该键,我们将发送`OnGameEnd`事件。 ### 总结 使用观察者模式,我们可以更容易地处理游戏中的事件和消息。在Unity中,我们可以使用C#的委托和事件来实现观察者模式。通过创建主题和观察者,并使用委托和事件来订阅和发送事件,我们可以使我们的代码更加模块化和可维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值