0

我正在设计一个系统来与几个不同的LMS(目前:Moodle、BlackBoard、Canvas)进行交互。目前,我有如下所示的内容:

ModelFactory
     |
MoodleModel     -\
BlackboardModel -|-- LMSInterface
CanvasModel     -/

从我的端点,我正在做

$mf = new ModelFactory($app, $ioc);

ModelFactory确定(从$app)要加载的模型,创建它,并允许通过调用后端模型$mf->model->

在这些后端模型中的每一个中,我都有类似get_coursesget_categoriesget_quizzes等的方法。我现在需要从测验中得到问题。

我最初的想法是在get_quiz_questions我的后端模型中添加一个,但这似乎很脏。

有没有“建议”的方式来做到这一点?

4

3 回答 3

2

返回什么get_quizzes?一个Quiz对象?如果是这样,您可以简单地添加get_questions到此对象,而不必担心 LMS 对象的层次结构。您的Quiz对象将是测验的后端不可知表示。

于 2013-01-29T16:16:44.480 回答
0

认为它应该很大程度上取决于您使用的对象和模型。如果问题 100% 是测验的一部分,而不是模型的数据,那么允许模型返回测验问题会令人困惑。但是,如果测验问题只是模型的第一级 sudobjects - 那么允许模型返回问题是很正常的。

此外,如果例如测验是一些复杂的对象并且可能返回问题并节省一些资源以不构造/发送测验实例。在其他情况下,我同意布赖恩的观点。

而且,如果您的 LMS 接口是某种远程接口 - 那么您需要使其尽可能简单,并保证它只返回整个对象,避免微调用。

于 2013-01-29T20:44:56.570 回答
0

如果您将 a 添加get_quiz_questions到后端模型,那就没问题了。我希望这样的函数(提供一系列测验问题)返回通用对象(可能使用Adapter 模式,或者可能使用Facade ,具体取决于设计的其余部分)。

于 2013-01-29T20:57:59.263 回答