Pola Desain Fasad di Jawa

1. Perkenalan

Dalam tutorial singkat ini, kita akan melihat salah satu pola desain struktural: Facade .

Pertama, kami akan memberikan gambaran umum tentang polanya, membuat daftar manfaatnya, dan menjelaskan masalah apa yang dipecahkannya.

Kemudian, kita akan menerapkan pola fasad ke masalah praktis yang sudah ada dengan Java.

2. Apa Itu Fasad?

Sederhananya, fasad merangkum subsistem kompleks di belakang antarmuka sederhana. Ini menyembunyikan banyak kerumitan dan membuat subsistem mudah digunakan.

Juga, jika kita perlu menggunakan subsistem kompleks secara langsung, kita masih bisa melakukannya; kami tidak dipaksa untuk menggunakan fasad sepanjang waktu.

Selain antarmuka yang lebih sederhana, ada satu keuntungan lagi menggunakan pola desain ini. Ini memisahkan implementasi klien dari subsistem kompleks. Berkat ini, kami dapat membuat perubahan pada subsistem yang ada dan tidak memengaruhi klien.

Mari kita lihat fasad beraksi.

3. Contoh

Katakanlah kita ingin menyalakan mobil. Diagram berikut mewakili sistem lama, yang memungkinkan kita melakukannya:

Seperti yang Anda lihat, ini bisa sangat rumit dan memang membutuhkan usaha untuk menyalakan mesin dengan benar :

airFlowController.takeAir() fuelInjector.on() fuelInjector.inject() starter.start() coolingController.setTemperatureUpperLimit(DEFAULT_COOLING_TEMP) coolingController.run() catalyticConverter.on()

Demikian pula, menghentikan mesin juga membutuhkan beberapa langkah:

fuelInjector.off() catalyticConverter.off() coolingController.cool(MAX_ALLOWED_TEMP) coolingController.stop() airFlowController.off()

Fasad adalah yang kita butuhkan di sini. Kami akan menyembunyikan semua kompleksitas dalam dua metode: startEngine () dan stopEngine () .

Mari kita lihat bagaimana kita bisa menerapkannya:

public class CarEngineFacade { private static int DEFAULT_COOLING_TEMP = 90; private static int MAX_ALLOWED_TEMP = 50; private FuelInjector fuelInjector = new FuelInjector(); private AirFlowController airFlowController = new AirFlowController(); private Starter starter = new Starter(); private CoolingController coolingController = new CoolingController(); private CatalyticConverter catalyticConverter = new CatalyticConverter(); public void startEngine() { fuelInjector.on(); airFlowController.takeAir(); fuelInjector.on(); fuelInjector.inject(); starter.start(); coolingController.setTemperatureUpperLimit(DEFAULT_COOLING_TEMP); coolingController.run(); catalyticConverter.on(); } public void stopEngine() { fuelInjector.off(); catalyticConverter.off(); coolingController.cool(MAX_ALLOWED_TEMP); coolingController.stop(); airFlowController.off(); }

Sekarang, untuk memulai dan menghentikan mobil, kita hanya membutuhkan 2 baris kode, bukan 13:

facade.startEngine(); // ... facade.stopEngine();

4. Kekurangan

Pola fasad tidak memaksa kita untuk melakukan pengorbanan yang tidak diinginkan, karena hanya menambahkan lapisan abstraksi tambahan.

Terkadang pola tersebut dapat digunakan secara berlebihan dalam skenario sederhana, yang akan menyebabkan penerapan yang berlebihan.

5. Kesimpulan

Dalam artikel ini, kami telah menjelaskan pola fasad dan mendemonstrasikan bagaimana menerapkannya di atas sistem yang ada.

Penerapan contoh-contoh ini dapat ditemukan di GitHub.