这是正确使用适配器模式吗?我无法实例化这个对象?

时间:2014-07-22 06:10:18

标签: c# unit-testing design-patterns unity3d

我在Unity3D上使用C#。

有一个名为Transform的对象类型,我无法直接实例化。

我想对使用Transform的函数进行一些单元测试。

这是正确的方法吗?

通过以下方式使用适配器模式:

  • 创建一个与Transform
  • 具有相同功能的类(TransformAdapter)
  • (当真实运行时)扩展TransformAdapter,使用一个名为UnityTransform的类,它包含一个转换,只是转发任何要转换的功能。
  • (在单元测试中运行时)扩展TransformAdapter,使用类MledTransform,它只保存由我的单元测试设置的值。

更新

在许多情况下,我似乎不需要创建抽象类来模拟对象,因为如果我从Unity3d单元测试窗口运行单元测试,我可以从单元测试中实例化对象。如果从MonoDevelop运行测试,我无法实例化对象。

1 个答案:

答案 0 :(得分:0)

Unity3D并不能真正让你使用正常的"设计模式由于某些限制,特别是它的内部序列化。

但具体到你的情况,在Unity3D中,没有GameObject就不能存在变换,反之亦然。只需在新变换上使用新的GameObject("在此插入名称")和GetComponent()。你可以写一个小工厂来做这件事。