我现在遇到了一个我自己不能真正解决的问题:
我已经开始编写一个“小”框架(browsergame- framework ),它在某种程度上遵循MVC模式。
现在我有了索引、引导、数据库适配器、分派器、包装器,但我真的不知道如何将它们链接起来。我编写了他们的方法等,但我不知道如何将它们设计成像引擎一样工作。
下一个问题是我的控制器,我不知道如何“链接”它们,以便它们可以轻松地访问整个框架……是的,这是令人困惑的,这就是为什么我需要你的帮助,一些通用的方案,“如何框架程序流”应该是非常好的。
谢谢。
发布于 2009-12-06 06:27:46
你这是本末倒置。框架不是写出来的,它们是成长起来的。参见拉尔夫·约翰逊的Evolving Frameworks,“四人帮”之一。
编辑
我不明白,作者所说的“应用程序”是什么意思,这是指原始编码的项目,还是指具有基本功能的项目,这些功能将被带到后来的框架中。
这取决于您在编程方面的专业知识和问题领域。重要的是目标(一个有用的框架),这个过程应该简单地支持你尽可能地实现它。您可以缓慢地开始,在同一问题域中开发三个应用程序,而不在它们之间共享任何代码,然后只查看代码库,看看它们有什么共同点,并可能重构这三个已完成的应用程序,以聚合代码,并提取公共部分。在第二个和第三个应用程序的开发过程中,这不会给您带来任何提振,但它也不会阻碍前两个应用程序的并发重构。
假设你想要一个框架来简化基于浏览器、基于会话的策略的编写。
你的第一个回合是编写这样一个游戏,而不是考虑在这个单一的游戏之外重用代码,但要注意其中的代码重用:毫不留情地重构,应用所有编程原则:OCP、SRP、DRY等,尤其是DRY。代码重用(不要重复自己)是编程的基本原则,也是构建框架的第一步。你最终会得到一个在整个游戏中使用的类和/或函数库。
你的第二个回合是遵循上面提到的原则,使用第一个游戏的代码编写另一个基于浏览器的、基于回合的策略。你会发现很多都是针对第一个游戏的。不加修改地使用适合第二个游戏的棋子,重构那些有用但不太适合的棋子,这样它们就有用了,并且确实适合这两个游戏。
在第三个游戏中重复这个过程。
3是最小的数字,它让你有希望得到跨问题域(考虑三角测量)的真正可重用的代码,而不是保证它会发生。OTOH,在没有现实世界应用程序支持的情况下推导出一个有用的框架肯定会以一堆无用的废话结束。
约翰逊:
开发可重用框架不能通过简单地设定和思考问题域来实现。没有人有足够的洞察力来提出适当的抽象。
请仔细阅读“三个示例”部分。
https://stackoverflow.com/questions/1853556
复制相似问题