Özet - Logger Fabrikası
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 66 / 70.
Görev
KolayFabrika (Factory) desenini kullanarak bir günlükleme (logging) sistemi oluşturalım! Ortak bir arayüzü paylaşan farklı günlükçü (logger) türleri oluşturacak ve ardından basit bir dize argümanına dayanarak doğru günlükçüyü üretmek için bir fabrika fonksiyonu kullanacaksınız.
Kodunuzu dört dosya halinde düzenleyeceksiniz:
ConsoleLogger.lua: Bir:new()kurucusu ve bir:log(message)metoduna sahip bir ConsoleLogger sınıfı oluşturun.:log()çağrıldığında, mesajı[CONSOLE]önekiyle yazdırmalıdır, örneğin:[CONSOLE] Your message here.FileLogger.lua: Aynı yapıya sahip bir FileLogger sınıfı oluşturun—bir:new()kurucusu ve bir:log(message)metodu. Bu günlükçü, mesajları bunun yerine bir[FILE]önekiyle yazdırmalıdır.LoggerFactory.lua: Fabrika deseninin bir araya geldiği yer burasıdır! Bir dize argümanı kabul eden bircreateLogger(loggerType)fonksiyonu oluşturun. Eğer tür"console"ise, yeni bir ConsoleLogger döndürün. Eğer tür"file"ise, yeni bir FileLogger döndürün. Fabrika, hangi sınıfın örnekleneceğine dair tüm detayları yönetir.main.lua: LoggerFactory modülünüzü dahil edin (require). İki girdi okuyun: günlükçü türü ve günlüklenecek bir mesaj. Uygun günlükçüyü oluşturmak için fabrikanızı kullanın, ardından mesajla birlikte onun:log()metodunu çağırın.
Bu tasarımın zarafeti, ana kodunuzun yalnızca fabrika ile etkileşime girmesidir—ConsoleLogger veya FileLogger hakkında doğrudan bilgi sahibi olmasına gerek yoktur. Her iki günlükçü de aynı :log() arayüzünü uygular, bu nedenle birbirlerinin yerine kullanılabilirler.
İki girdi alacaksınız:
- Günlükçü türü (
"console"veya"file") - Günlüklenecek mesaj
Örneğin, girdiler console ve Application started ise, çıktı şöyle olmalıdır:
[CONSOLE] Application startedEğer girdiler file ve Saving user data... ise, çıktı şöyle olmalıdır:
[FILE] Saving user data...Kendin dene
-- main.lua
-- Günlükleme sistemi için ana giriş noktası
local LoggerFactory = require('LoggerFactory')
-- Girdileri oku
local loggerType = io.read()
local message = io.read()
-- TODO: Uygun günlükleyiciyi (logger) oluşturmak için LoggerFactory'yi kullanın
-- Ardından mesaj ile birlikte :log() metodunu çağırın
Object Oriented Programming bölümündeki tüm dersler
1'Self' Kavramı
Fonksiyonlu TablolarAçık 'self'İki Nokta SözdizimiNokta vs İki NoktaÖzet - Hareket Eden Nokta4Proje: Dijital Banka
Proje KurulumuPara Yatırma Metodu7Çok Biçimlilik ve Geçersiz Kılma
Metotları Geçersiz KılmaÜst Sınıf Metotlarını ÇağırmaDuck TypingOrtak ArayüzTür KontrolüÖzet - Çalışan Rolleri2Sınıf Prototip Kalıbı
Prototip Kavramı__index ile Bağlama:new() KurucusuÖznitelikleri BaşlatmaBağımsız ÖrneklerÖzet - Araba Fabrikası5OOP'de Operatör Aşırı Yükleme
Nesneleri ToplamaNesneleri ÇıkarmaNesneleri BirleştirmeNesneleri Karşılaştırma (<, >)Özet - Cüzdan Matematiği8Kapsülleme
Adlandırma KurallarıGizlilik için Closure'larClosure'lar Aracılığıyla ErişimSalt Okunur TablolarDoğrulama MantığıÖzet - Güvenli Kasa11Tasarım Kalıpları (Lite)
Fabrika FonksiyonlarıSingleton TablosuIterator KalıbıObserver (Dinleyici)Özet - Logger Fabrikası3Nesne Durumu ve Davranışı
Örnek DeğişkenleriGetter MetotlarıSetter MetotlarıHesaplanmış ÖzelliklerString BiçimlendirmeEşitlik KontrolleriÖzet - Öğrenci Notu6Kalıtımın Temelleri
Kalıtım KurulumuMetot KalıtımıConstructor'ı GenişletmeAlt Sınıf Metotları EklemePaylaşılan ve BenzersizÖzet - Şekil Hiyerarşisi