Corak Reka Bentuk Fasad di Jawa

1. Pengenalan

Dalam tutorial ringkas ini, kita akan melihat salah satu corak reka bentuk struktur: Fasad .

Pertama, kami akan memberikan gambaran keseluruhan mengenai corak, menyenaraikan faedahnya dan menerangkan masalah yang diselesaikannya.

Kemudian, kami akan menerapkan corak fasad pada masalah praktikal yang ada dengan Java.

2. Apa itu Fasad?

Ringkasnya, fasad merangkumi subsistem kompleks di belakang antara muka yang mudah. Ini menyembunyikan banyak kerumitan dan menjadikan subsistem mudah digunakan.

Sekiranya kita perlu menggunakan subsistem kompleks secara langsung, kita masih boleh melakukannya; kita tidak dipaksa untuk menggunakan fasad sepanjang masa.

Selain antara muka yang lebih sederhana, ada satu lagi kelebihan menggunakan corak reka bentuk ini. Ini memisahkan pelaksanaan klien dari subsistem kompleks. Berkat ini, kami dapat membuat perubahan pada subsistem yang ada dan tidak mempengaruhi pelanggan.

Mari lihat fasad beraksi.

3. Contoh

Katakan bahawa kita mahu memulakan kereta. Gambar rajah berikut menunjukkan sistem warisan, yang membolehkan kita melakukannya:

Seperti yang anda lihat, ia cukup rumit dan memerlukan sedikit usaha untuk menghidupkan enjin dengan betul :

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

Begitu juga dengan menghentikan enjin, memerlukan beberapa langkah:

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

Fasad adalah apa yang kita perlukan di sini. Kami akan menyembunyikan semua kerumitan dalam dua kaedah: startEngine () dan stopEngine () .

Mari lihat bagaimana kita dapat melaksanakannya:

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 memulakan dan menghentikan kereta, kita hanya memerlukan 2 baris kod, bukannya 13:

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

4. Kekurangan

Corak fasad tidak memaksa kita untuk melakukan pertukaran yang tidak diingini, kerana hanya menambah lapisan abstraksi.

Kadang-kadang corak boleh digunakan secara berlebihan dalam senario sederhana, yang akan menyebabkan pelaksanaan berlebihan.

5. Kesimpulan

Dalam artikel ini, kami telah menerangkan corak fasad dan menunjukkan bagaimana menerapkannya di atas sistem yang ada.

Pelaksanaan contoh-contoh ini boleh didapati di GitHub.