Menu
CoddyTech

Rangkuman, Factory Logger

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 66 dari 70.

challenge icon

Tantangan

Mudah

Mari 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 fungsi createLogger(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:

  1. Tipe logger, yaitu "console" atau "file"
  2. Pesan yang akan dicatat

Contohnya, jika inputnya adalah console dan Application started, outputnya adalah:

[CONSOLE] Application started

Jika 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

Latihan sendiri: Compiler Lua online