2012-01-27 40 views
0

我试图熟悉设计模式,模块化,单元测试等(使用ActionScript)。As3:转换工具体系结构建议

我现在正在开发一个简单的“自由变换工具”,就像练习一样,但我不喜欢我到目前为止提出的解决方案,所以我会尽量走你的路线的想法。当我提出这个想法时,我想“写什么才能测试这个伟大的单元测试框架FlexUnit”,我看到的第一件事就是猜测......一个自由变换工具。 :)当我思考的工具,我运行的每个场景槽的架构“我怎样才能编写单元测试什么东西?”,所以我想出了某种扭曲的MVC元模式的:

  • 一查看所有组件(旋转区域,拖动区域,调整大小按钮)
  • 模型(或类似的东西),持有必要的逻辑(setSize,setPositiom,rotateAroundCenter等..)。
  • 还有一个控制器,它将侦听器添加到视图组件,更新鼠标光标,当它与组件交互时,获取鼠标坐标,当与组件交互时,执行计算并调用模型中的方法,以更新视图和良性转化的对象。

我在想:“确定它的灵活性,我可以随时切换M,V或C,我实现了我的主要目标,因为我可以对模型进行大量的单元测试,其中重要的计算是,所以它很棒..“。

我刚刚开始实施它,但我认为这些想法大多是错误的。是的,我可以改变视图并添加新的皮肤,但它根本不灵活,如果我想添加“skew”(或任何其他)功能,我应该重写(或者如果我很幸运,只是扩展)M,V和C. 是的,我可以对模型进行束单元测试,但控制器的计算将很难测试。

所以现在我正在考虑像装饰模式,这将允许我创建任何组合的控件我想要使用和保持其逻辑分离,但我想有选择重新皮肤控制自己并保持逻辑分离,所以我可以做测试。

我意识到我想创造某种“终极转换工具”,但我真的试图推动我的极限并学习一些东西。

+0

是简单的问题,“你会建议什么样的设计模式我用它来构建这个工具?” – Aaron 2012-01-27 02:46:52

回答

0

不知道我是否在这里回答你的问题,但你有没有检查出任何MVC框架? 如果你还没有,我会检查Robotlegs,它应该帮助你创建可测试的代码。

http://www.robotlegs.org/

+0

是的问题是你会用什么样的设计模式来构建这个工具?我真的不想使用孔框架来创建一个组件。 – 2012-01-27 08:51:16

+0

这个框架其实很小。不过,如果你没有考虑包含它,你不需要MVC。您可以阅读一般概念并在设计中实施它们。 – francis 2012-01-27 13:41:57