Récapitulatif - Logger Factory
Fait partie de la section Programmation orientée objet du Journey Lua de Coddy. Leçon 66 sur 70.
Défi
FacileConstruisons un système de journalisation en utilisant le modèle Factory ! Tu vas créer différents types de loggers qui partagent une interface commune, puis utiliser une fonction factory pour produire le logger approprié en fonction d’un simple argument chaîne.
Tu organiseras ton code sur quatre fichiers :
ConsoleLogger.lua: crée une classe ConsoleLogger avec un constructeur:new()et une méthode:log(message). Lorsque:log()est appelée, elle doit afficher le message avec le préfixe[CONSOLE], comme dans[CONSOLE] Your message here.FileLogger.lua: crée une classe FileLogger avec la même structure : un constructeur:new()et une méthode:log(message). Ce logger doit afficher les messages avec le préfixe[FILE]à la place.LoggerFactory.lua: c’est ici que le modèle Factory prend forme ! Crée une fonctioncreateLogger(loggerType)qui accepte un argument chaîne. Si le type est"console", retourne un nouveau ConsoleLogger. Si le type est"file", retourne un nouveau FileLogger. La factory gère tous les détails liés à la classe à instancier.main.lua: charge ton module LoggerFactory. Lis deux entrées : le type de logger et un message à journaliser. Utilise ta factory pour créer le logger approprié, puis appelle sa méthode:log()avec le message.
L’élégance de cette conception réside dans le fait que ton code principal n’interagit qu’avec la factory. Il n’a pas besoin de connaître directement ConsoleLogger ou FileLogger. Les deux loggers implémentent la même interface :log(), ils peuvent donc être utilisés de manière interchangeable.
Tu recevras deux entrées :
- Le type de logger (soit
"console", soit"file") - Le message à journaliser
Par exemple, si les entrées sont console et Application started, la sortie doit être :
[CONSOLE] Application startedSi les entrées sont file et Saving user data..., la sortie doit être :
[FILE] Saving user data...Essayez vous-même
-- main.lua
-- Point d'entrée principal pour le système de journalisation
local LoggerFactory = require('LoggerFactory')
-- Lire les entrées
local loggerType = io.read()
local message = io.read()
-- TODO: Utiliser le LoggerFactory pour créer le logger approprié
-- Ensuite appeler la méthode :log() avec le message
Toutes les leçons de Programmation orientée objet
1Le concept de « self »
Tables avec fonctions« self » expliciteLa syntaxe avec deux-pointsPoint vs deux-pointsRécapitulatif - Point mobile4Projet : Banque numérique
Configuration du projetMéthode de dépôt7Polymorphisme et Redéfinition
Redéfinition de méthodesAppeler des méthodes parentesDuck TypingInterface communeVérification du typeRécapitulatif - Rôles des employés10Projet : Gestionnaire de formes
Configuration du projetClasse RectangleClasse CercleMéthode PérimètreCollection de formesAire totaleFiltrer les formes2Modèle de prototype de classe
Le concept de prototypeLiaison avec __indexLe constructeur :new()Initialisation des attributsInstances indépendantesRécapitulatif - Usine de voitures5Surcharge d'opérateurs en POO
Additionner des objetsSoustraire des objetsConcaténer des objetsComparer des objets (<, >)Récapitulatif - Calculs de portefeuille8Encapsulation
Conventions de nommageClosures pour la confidentialitéAccès via les ClosuresTables en lecture seuleLogique de validationRécapitulatif - Coffre-fort sécurisé11Patrons de conception (Lite)
Fonctions FactoryTable SingletonPatron IteratorObserver (Écouteur)Récapitulatif - Logger Factory3État et comportement des objets
Variables d'instanceMéthodes GetterMéthodes SetterPropriétés calculéesFormatage de chaînesVérifications d'égalitéRécapitulatif - Note de l'étudiant6Bases de l'héritage
Mise en place de l'héritageHériter des méthodesÉtendre le constructeurAjouter des méthodes enfantsPartagé vs UniqueRécapitulatif - Hiérarchie des formesEntraînez-vous par vous-même : Compilateur Lua en ligne