Template Method: Mendefinisikan Kerangka Algoritma
Definisikan kerangka algoritma di class dasar dan biarkan subclass mengisi langkah-langkahnya.
Template Method: Mendefinisikan Kerangka Algoritma adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.
Maksud Metode Templat
Metode Templat mendefinisikan kerangka algoritme dalam kelas dasar dan menyerahkan beberapa langkah kepada subkelas. Subkelas dapat mengganti langkah-langkah tersebut tanpa mengubah struktur keseluruhan.
Kelas Dasar Abstrak
Kelas dasar memiliki metode templat—biasanya final—yang mengatur langkah-langkahnya. Metode abstrak mewakili langkah yang bervariasi. Metode konkret menyediakan perilaku bawaan.
public abstract class DataProcessor {
// Template method — final, defines the algorithm
public final void process() {
readData();
processData();
writeResult();
}
protected abstract void readData();
protected abstract void processData();
protected void writeResult() {
System.out.println("Result written (default)");
}
}Subkelas Konkret
Setiap subkelas mengisi langkah-langkah abstrak. Urutan metode templat tidak pernah berubah—hanya implementasi setiap langkah yang bervariasi.
public class CSVProcessor extends DataProcessor {
protected void readData() { System.out.println("Reading CSV..."); }
protected void processData() { System.out.println("Parsing CSV rows..."); }
}
public class XMLProcessor extends DataProcessor {
protected void readData() { System.out.println("Reading XML..."); }
protected void processData() { System.out.println("Parsing XML nodes..."); }
@Override
protected void writeResult() { System.out.println("Writing XML result."); }
}Metode Pengait
Pengait adalah langkah opsional dengan implementasi bawaan, yang sering kali kosong. Subkelas dapat mengganti pengait untuk menambahkan perilaku opsional tanpa diwajibkan mengimplementasikannya.
public abstract class Game {
public final void play() {
initialize();
while (!isDone()) takeTurn();
printWinner();
}
protected void initialize() {} // hook — optional override
protected abstract boolean isDone();
protected abstract void takeTurn();
protected abstract void printWinner();
}Metode Templat vs Strategi
Metode Templat menggunakan pewarisan: kerangka ditetapkan di kelas dasar, sedangkan langkah-langkahnya diganti di subkelas. Strategi menggunakan komposisi: seluruh algoritme berada di luar. Strategi lebih fleksibel; Metode Templat lebih sederhana jika langkah-langkahnya berbagi banyak konteks.
Java InputStream sebagai Metode Templat
java.io.InputStream's read(byte[], int, int) diimplementasikan berdasarkan read() yang abstrak. Subkelas mengimplementasikan versi satu byte; pembacaan beberapa byte menjadi templatnya.
Metode Templat untuk Pembuatan Laporan
Definisikan templat laporan: kumpulkan data, format data tersebut, lalu keluarkan hasilnya. Ganti subkelas untuk keluaran PDF, HTML, atau CSV tanpa mengubah logika orkestrasi.
public abstract class ReportGenerator {
public final String generate() {
List<Record> data = fetchData();
String body = format(data);
return wrap(body);
}
protected abstract List<Record> fetchData();
protected abstract String format(List<Record> data);
protected String wrap(String body) { return body; } // hook
}Mencegah Penggantian Templat
Deklarasikan metode templat sebagai final untuk mencegah subkelas mengubah struktur algoritme. Hanya metode pengait dan metode abstrak yang seharusnya dapat diganti.
public final void process() {
validate(); // abstract
execute(); // abstract
cleanup(); // hook with default
}Langkah Abstrak vs Konkret
Jadikan sebuah langkah abstrak jika langkah tersebut harus disediakan oleh subkelas. Jadikan konkret—mungkin kosong—jika subkelas dapat menggantinya untuk penyesuaian.
Metode Templat di JUnit
setUp() dan tearDown() milik JUnit 4 adalah pengait dalam metode templat yang didefinisikan oleh pelari pengujian. Pelari mengendalikan kapan keduanya dipanggil.
Metode Templat di Spring
JdbcTemplate milik Spring menggunakan Metode Templat secara internal. Templat mengendalikan koneksi, pembuatan pernyataan, dan pembersihan; Anda menyediakan lambda RowMapper untuk langkah "memetakan baris" yang bervariasi.
List<User> users = jdbcTemplate.query(
"SELECT * FROM users",
(rs, row) -> new User(rs.getLong("id"), rs.getString("name"))
);Hindari Pewarisan yang Mendalam
Metode Templat bergantung pada pewarisan, yang dapat menghasilkan hierarki kelas yang dalam. Batasi hingga 1–2 tingkat. Jika subkelas mulai mengganti banyak langkah dengan cara yang berbeda-beda, pertimbangkan untuk beralih ke Strategi.
Pemeriksaan Singkat
Kata kunci apa yang mencegah subkelas mengubah urutan metode templat?
Ringkasan
Metode Templat mengunci kerangka algoritme dalam kelas dasar dengan final. Subkelas mengimplementasikan langkah abstrak dan secara opsional mengganti pengait. Pertahankan hierarki tetap dangkal; gunakan Strategi jika diperlukan fleksibilitas yang lebih besar.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Template Method: Mendefinisikan Kerangka Algoritma” gratis?
Ya — teks lengkap “Template Method: Mendefinisikan Kerangka Algoritma” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Template Method: Mendefinisikan Kerangka Algoritma”?
Definisikan kerangka algoritma di class dasar dan biarkan subclass mengisi langkah-langkahnya. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Template Method: Mendefinisikan Kerangka Algoritma” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pola Observer: Notifikasi Acara
- Pola Strategy: Algoritma yang Dapat Dipertukarkan
- Pola Command: Merangkum Tindakan
- Template Method: Mendefinisikan Kerangka Algoritma