March 31, 2023


Pola desain metode template memungkinkan Anda untuk menentukan langkah-langkah suatu algoritma dalam satu metode kelas. Ini memungkinkan Anda untuk membatasi operasi tertentu dari suatu aplikasi ke satu metode.


Setiap langkah dari algoritma yang didefinisikan oleh metode template adalah metode dalam. Namun, metode templat hanya menangani implementasi beberapa metode dalamnya. Subclass biasanya mengimplementasikan satu atau lebih metode dalam metode template.

Subkelas dapat mengimplementasikan metode abstrak, tetapi tidak dapat mendefinisikan kembali algoritma yang diimplementasikan oleh metode akhir.


Bagaimana Metode Template Bekerja

Pola metode templat tipikal akan memiliki struktur berikut:

final void templateMethod() {
abstractOperation1();
abstractOperation2();

concreteOperation1();
concreteOperation2();

hook();
}

Hal penting pertama yang harus diperhatikan adalah bahwa templateMethod() bersifat final, jadi tidak ada subkelas yang dapat menimpa metode ini. Hal penting lainnya yang perlu diperhatikan adalah tiga jenis metode yang digunakan pola metode templat: konkret, abstrak, dan kait.

Kelas abstrak yang menampung metode templat mengimplementasikan semua metode konkretnya, sementara subkelas konkret mengimplementasikan metode abstraknya. Metode hook biasanya tidak melakukan apa-apa secara default, tetapi subclass memang memiliki kemampuan untuk mengganti metode ini bila diperlukan.

Menerapkan Pola Metode Template di Java

Pola metode template bertindak sebagai kerangka kerja untuk aplikasi. Jadi, Anda akan sering melihat pola ini dalam kerangka kerja perangkat lunak yang menyediakan cetak biru untuk pengembangan aplikasi.

Misalnya, Anda dapat menghubungkan aplikasi Anda ke salah satu dari banyak sistem database. Langkah-langkah untuk menyambung ke dan menggunakan database mengikuti template serupa:

public abstract class Database {
final void databaseTemplate() {
setDBDriver();
setCredentials();


connect();


createDB();
setData();
readData();


if (userWantsToUpdate()) {
updateData();
}

if (userWantsToDelete()) {
deleteData();
}


closeConnection();
}

abstract void setDBDriver();
abstract void setCredentials();
abstract void createDB();
abstract void setData();
abstract void readData();
abstract void updateData();
abstract void deleteData();

void connect() {
System.out.println("Connecting to database...");
}

void closeConnection() {
System.out.println("Destroying database connection...");
}

boolean userWantsToUpdate() {
return false;
}

boolean userWantsToDelete() {
return false;
}
}

Contoh kelas Database ini menggunakan pola metode templat untuk membuat templat yang dapat Anda gunakan dengan database apa pun. Untuk menggunakan database, aplikasi Anda harus terhubung ke database, lalu musnahkan koneksi setelah digunakan. Aktivitas ini biasanya sama untuk semua database. Oleh karena itu, kelas Database abstrak dapat mengimplementasikan Menghubung() dan tutupKoneksi() metode.

Metode lain dalam metode template akan berbeda berdasarkan jenis database. Misalnya, database MySQL menyimpan data dalam tabel, sementara a Basis data MongoDB menyimpan data dalam koleksi. Jika Anda ingin menggunakan Database MySQL di Jawacukup buat kelas MySQL baru yang memperluas kelas Database:

public class MySQL extends Database {
@Override
void setDBDriver() {
System.out.println("Selecting MySQL driver...");
}

@Override
void setCredentials() {
System.out.println("Setting MySQL database Credential...");
}

@Override
void createDB() {
System.out.println("Creating a new table...");
}

@Override
void setData() {
System.out.println("Inserting data into database...");
}

@Override
void readData() {
System.out.println("Retrieving data from database...");
}

@Override
void updateData() {
System.out.println("Updating data in database...");
}

@Override
void deleteData() {
System.out.println("Deleting data from database...");
}
}

Kelas MySQL mengimplementasikan semua metode abstrak dari kelas Database. Itu juga dapat mengesampingkan beberapa metode konkret. Namun, itu tidak bisa menyentuh databaseTemplat() metode, yang menggunakan kata kunci final.

public class Main {
public static void main(String[] args) {
Database mySQLDB = new MySQL();
mySQLDB.databaseTemplate();
}
}

Kelas Utama ini membuat objek database MySQL baru dan menggunakan metode template untuk mensimulasikan bagaimana aplikasi akan terhubung ke database. Menjalankan metode utama mencetak output berikut ke konsol:

Metode templat basis data MySQL

Di output, Anda akan melihat bahwa aplikasi tidak pernah memanggil perbaharui data() dan hapusData() metode. Inilah sebabnya mengapa metode hook itu penting. Dalam database SQL, Anda ingin membuat tabel baru, menyisipkan data, dan menampilkan data Anda. Namun, Anda mungkin tidak ingin memperbarui atau menghapus data. Oleh karena itu, metode hook memberikan subclass pilihan untuk mengontrol aspek-aspek penting dari algoritma.

@Override
boolean userWantsToUpdate() {
return true;
}

Dengan hanya menambahkan kode di atas ke kelas MySQL, aplikasi sekarang memperbarui data dalam database. Jika Anda menjalankan kelas Utama lagi, itu akan menampilkan output yang diperbarui berikut:

Pembaruan metode templat basis data MySQL

Seperti yang Anda lihat, aplikasi sekarang memperbarui data di Database.

Manfaat Menggunakan Pola Desain Metode Template

Manfaat utama dari pola metode template adalah bahwa hal itu mendorong penggunaan kembali perangkat lunak. Pola desain ini juga mendukung pemrograman yang efisien. Subclass hanya perlu mengimplementasikan metode yang unik untuk operasinya.

Selain itu, aplikasi yang menggunakan pola metode templat lebih aman, karena kelas eksternal tidak dapat mengubah struktur operasinya.

Leave a Reply

Your email address will not be published. Required fields are marked *