Özet - Logger Fabrikası
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 66 / 70.
Görev
KolayFabrika desenini kullanarak bir günlük kaydı sistemi oluşturalım! Ortak bir arayüzü paylaşan farklı günlük kaydı sınıfları oluşturacak, ardından basit bir dize bağımsız değişkenine göre doğru günlük kaydı sınıfını üretmek için bir fabrika işlevi kullanacaksın.
Kodunu dört dosyaya ayıracaksın:
ConsoleLogger.lua::new()oluşturucusuna ve:log(message)yöntemine sahip bir ConsoleLogger sınıfı oluştur.:log()çağrıldığında, iletiyi[CONSOLE]ön ekiyle,[CONSOLE] Your message herebiçiminde yazdırmalıdır.FileLogger.lua: Aynı yapıya sahip bir FileLogger sınıfı oluştur::new()oluşturucusu ve:log(message)yöntemi. Bu günlük kaydı sınıfı bunun yerine iletileri[FILE]ön ekiyle yazdırmalıdır.LoggerFactory.lua: Fabrika deseni burada bir araya gelir! Bir dize bağımsız değişkeni alan bircreateLogger(loggerType)işlevi oluştur. Tür"console"ise yeni bir ConsoleLogger döndür. Tür"file"ise yeni bir FileLogger döndür. Fabrika, hangi sınıfın örneklendirileceğine ilişkin tüm ayrıntıları yönetir.main.lua: LoggerFactory modülünü içe aktar. İki girdi oku: günlük kaydı türü ve kaydedilecek ileti. Uygun günlük kaydı sınıfını oluşturmak için fabrikayı kullan, ardından iletiyi bağımsız değişken olarak vererek sınıfın:log()yöntemini çağır.
Bu tasarımın zarif yanı, ana kodunun yalnızca fabrikayla etkileşime girmesidir. Doğrudan ConsoleLogger veya FileLogger hakkında bilgi sahibi olması gerekmez. Her iki günlük kaydı sınıfı da aynı :log() arayüzünü uygular; bu nedenle birbirlerinin yerine kullanılabilirler.
İki girdi alacaksın:
- Günlük kaydı türü (
"console"veya"file") - Kaydedilecek ileti
Örneğin girdiler console ve Application started ise çıktı şöyle olmalıdır:
[CONSOLE] Application startedGirdiler 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 logger'ı oluşturmak için LoggerFactory'yi kullan
-- Ardından :log() metodunu mesaj ile çağır
Nesne Yönelimli Programlama 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şisiKendi başına pratik yap: Online Lua derleyicisi