このタスクのFactoryデザインパターンを実装するのを手伝ってください。PHPでデータオブジェクトをFactoryに渡す
私は、スケジュールされたメッセージ送信Webアプリケーションに取り組んでいます。 ユーザーは、自分のスケジュールされた送信計画を指定できます。メッセージは、送信が必要なときに配信されます。 ユーザーは、毎月、毎週、毎日の3種類のリクルートタイプのうちの1つだけを選択できます。 1)送信日時を選択してください(最初の配信の場合) 2)再入荷タイプに応じて「X月/週/日ごとに繰り返す」のオプションを選択してください。 3)タイプによって終了を指定してください(日付または発生制限によって)
ウィークリースケジューラは少し異なります。 これは、1つの以上の機能を持っている - 平日繰り返す(例:すべての月、金を繰り返す)
class SchedulerFactory {
public function create($type) {
switch ($type) {
case "monthly" :
$Scheduler = new MonthlyScheduler();
break;
case "weekly" :
$Scheduler = new WeeklyScheduler();
break;
case "daily":
$Scheduler = new DailyScheduler();
break;
default:
return null;
}
}
}
セッターメソッド:
$SendScheduler->setSendDateAndTime("{$day}.{$month}.{$year}", time());
switch($end_by_type) {
case 'by_date':
$SendScheduler- >setEndByDate("{$end_by_date_day}.{$end_by_date_month}.{$end_by_date_year}");
break;
case 'by_occurences_limit':
$SendScheduler->setOccurencesLimit($occurences_quantity);
break;
}
$SendScheduler->addTaskOccuringEvery($RepeatEveryMonth);// repeat every X months/weeks/days depending on type
// only for weekly type
$SendScheduler->setWeekDayForRepeating($week_day); // repeat every Mon, Fri
を私は(オブジェクトの構築のためにFactoryパターンを使用したい、それがベストマッチ?)、そしてオブジェクト構築のためにどのように($ typeだけでなく、他のすべての)このパラメータを渡すことができるのか分かりません。
単一のデータオブジェクトにラップして作成し、SchedulerFactoryクラスのメソッドsetOptionsを作成し、このデータオブジェクトをgetterを使用して作成メソッドに渡す必要がありますか?
ファクトリクラスでこのようなセッタメソッドを作成することは、ファクトリデザインパターンの原則に違反している可能性がありますか?私は前にこのような例は見ませんでしたので、少し混乱しています。
私が間違った方向に向いている場合は、教えてください。 このタスクではどのような解決策をお勧めしますか?
おかげで、事前