我正在设计一个系统来与几个不同的LMSs进行交互(目前:Moodle,BlackBoard,Canvas)。目前,我的内容如下:
ModelFactory
|
MoodleModel -\
BlackboardModel -|-- LMSInterface
CanvasModel -/
从我的终点来看,我正在做
$mf = new ModelFactory($app, $ioc);
和ModelFactory
确定(来自$app
)要加载哪些模型,创建模型,并允许通过$mf->model->
调用后端模型。
在每个后端模型中,我都有get_courses
,get_categories
,get_quizzes
等方法。我现在需要从测验中获取问题。
我最初的想法是在我的后端模型中添加get_quiz_questions
,但这看起来很脏。
是否有“建议”的方法?
答案 0 :(得分:2)
get_quizzes
返回什么?一个Quiz
对象?如果是这样,您只需将get_questions
添加到此对象,而不必担心LMS对象的层次结构。您的Quiz
对象将是测验的后端不可知表示。
答案 1 :(得分:0)
认为它应该非常依赖于您使用的对象和模型。如果问题是测验的100%部分,而不是模型的数据,则允许模型返回测验问题会令人困惑。但是,如果测验问题只是模型的第一级问题 - 那么允许模型返回问题是很正常的。
此外,例如,如果测验是一些复杂的对象,并且可能返回问题并节省一些资源而不构建/发送测验实例。在其他情况下,我同意Brian的观点。
而且,如果你的LMS接口是某种远程接口 - 那么你需要让它尽可能简单并保证它只返回整个对象,避免微调用。
答案 2 :(得分:0)
如果您向后端模型添加get_quiz_questions
,那就没问题了。我希望这样一个函数(提供一系列测验问题)来返回通用对象(可能使用Adapter pattern,或者Facade,这取决于设计的其余部分。)