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

get_quiz_questionsバックエンドモデルにを追加する場合は、それで問題ありません。そのような関数(クイズの質問の配列を提供する)が一般的なオブジェクトを返すことを期待します(おそらくアダプターパターンを使用するか、デザインの残りの部分に応じてファサードを使用します)。

于 2013-01-29T20:57:59.263 に答える
0

操作するオブジェクトとモデルに大きく依存するはずだと考えてください。質問が 100% クイズの一部であり、Model のデータではない場合、モデルがクイズの質問を返すことを許可すると混乱を招きます。しかし、クイズの質問がモデルの第 1 レベルの sudobjects にすぎない場合は、モデルが質問を返すことを許可するのはごく普通のことです。

また、たとえばクイズが複雑なオブジェクトであり、質問を返し、クイズインスタンスを構築/送信しないようにリソースを節約できる場合。それ以外の場合は、ブライアンに同意します。

また、LMS インターフェースがある種のリモート インターフェースである場合は、できるだけ単純にして、マイクロ呼び出しを避けてオブジェクト全体のみを返すことを保証する必要があります。

于 2013-01-29T20:44:56.570 に答える