Rangkuman, Factory Logger
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 66 dari 70.
Tantangan
MudahMari buat sistem logging menggunakan pola Factory! Kamu akan membuat berbagai jenis logger yang memiliki antarmuka umum, lalu menggunakan fungsi factory untuk menghasilkan logger yang tepat berdasarkan argumen string sederhana.
Kamu akan menyusun kodemu dalam empat file:
ConsoleLogger.lua: Buat class ConsoleLogger dengan konstruktor:new()dan method:log(message). Saat:log()dipanggil, method ini harus mencetak pesan dengan awalan[CONSOLE], seperti[CONSOLE] Your message here.FileLogger.lua: Buat class FileLogger dengan struktur yang sama: konstruktor:new()dan method:log(message). Logger ini harus mencetak pesan dengan awalan[FILE].LoggerFactory.lua: Di sinilah pola Factory diterapkan! Buat fungsicreateLogger(loggerType)yang menerima argumen string. Jika tipenya"console", kembalikan ConsoleLogger baru. Jika tipenya"file", kembalikan FileLogger baru. Factory menangani semua detail untuk menentukan class yang akan dibuat.main.lua: Muat module LoggerFactory-mu. Baca dua input: tipe logger dan pesan yang akan dicatat. Gunakan factory-mu untuk membuat logger yang sesuai, lalu panggil method:log()miliknya dengan pesan tersebut.
Keunggulan desain ini adalah kode utamamu hanya berinteraksi dengan factory. Kode tersebut tidak perlu mengetahui ConsoleLogger atau FileLogger secara langsung. Kedua logger menerapkan antarmuka :log() yang sama, sehingga keduanya dapat digunakan secara bergantian.
Kamu akan menerima dua input:
- Tipe logger, yaitu
"console"atau"file" - Pesan yang akan dicatat
Contohnya, jika inputnya adalah console dan Application started, outputnya adalah:
[CONSOLE] Application startedJika inputnya adalah file dan Saving user data..., outputnya adalah:
[FILE] Saving user data...Coba sendiri
-- main.lua
-- Titik masuk utama untuk sistem pencatatan log
local LoggerFactory = require('LoggerFactory')
-- Baca input
local loggerType = io.read()
local message = io.read()
-- TODO: Gunakan LoggerFactory untuk membuat logger yang sesuai
-- Lalu panggil method :log() dengan pesan tersebut
Semua pelajaran di Pemrograman Berorientasi Object
1Konsep "Self"
Tabel dengan Fungsi'self' EksplisitSintaks Titik DuaTitik vs Titik DuaRangkuman, Titik Bergerak4Proyek: Bank Digital
Penyiapan Proyekmethod Setoran7Polimorfisme & Overriding
Menimpa methodMemanggil method indukDuck TypingAntarmuka UmumMemeriksa TipeRingkasan: Peran Karyawan10Proyek: Pengelola Bentuk
Penyiapan Proyekclass Rectangleclass Circlemethod KelilingKumpulan BentukLuas TotalSaring Bentuk2Pola Prototype untuk class
Konsep PrototypeMenghubungkan dengan __indexKonstruktor :new()Menginisialisasi AtributInstans yang MandiriRangkuman: Pabrik Mobil5Pembebanan Operator dalam OOP
Menjumlahkan ObjekMengurangkan ObjekMenggabungkan ObjekMembandingkan Objek (<, >)Ulasan: Aritmetika Dompet8Enkapsulasi
Konvensi PenamaanClosure untuk PrivasiAkses melalui ClosureTabel Hanya-BacaLogika ValidasiRangkuman: Brankas Aman11Pola Desain (Ringan)
Fungsi FactoryTabel SingletonPola IteratorObserver (Listener)Rangkuman, Factory Logger3State dan Behavior pada object
Variabel InstansGetter methodSetter methodProperty TerhitungMemformat stringPemeriksaan KesetaraanRangkuman: Nilai Siswa6Dasar-Dasar Pewarisan
Menyiapkan PewarisanMewarisi methodMemperluas KonstruktorMenambahkan method untuk ChildSama vs UnikRangkuman: Hierarki BentukLatihan sendiri: Compiler Lua online