S'il vous plaît aidez-moi à implémenter le modèle de conception d'usine pour la tâche.Passer l'objet de données à l'usine dans PHP
Je travaille sur une application Web d'envoi de message programmé. L'utilisateur peut spécifier son propre plan d'envoi planifié et les messages seront livrés lorsqu'il le faut. L'utilisateur peut choisir l'un des 3 types de reccuring: mensuel, hebdomadaire, quotidien. Pour ces 3 types de reccuring l'algorithme est similaire: 1) choisir la date et l'heure d'envoi (pour la première livraison) 2) choisir l'option "répéter tous les X mois/semaines/jours" selon le type de reccuring 3) spécifier fin par type (date ou limite d'occurrence)
Le planificateur hebdomadaire est un peu différent. Il dispose d'une fonctionnalité de plus - jours de la semaine pour répéter (ex: répéter tous les LUN., ven)
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;
}
}
}
méthodes setter:
$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
Je veux utiliser modèle d'usine pour la construction de l'objet (est-ce le meilleure correspondance?), et ne sais pas comment puis-je passer tous ces paramètres (pas seulement $ type, mais tous les autres) pour la construction de l'objet. Dois-je créer un retour à la ligne dans un objet de données unique et créer la méthode "setOptions" dans la classe SchedulerFactory et passer cet objet de données à "créer" la méthode de construction via getter?
La création d'une telle méthode d'ensimage dans la classe Factory peut-elle constituer une violation des principes du modèle de conception d'usine? Je n'ai pas vu d'exemple comme celui-ci avant, donc je suis un peu confus maintenant.
Si je vais dans la mauvaise direction, s'il vous plaît faites le moi savoir. Quelle solution recommanderiez-vous pour cette tâche?
Merci à l'avance