Sobes.tech
Middle

Czy znasz wzorzec Facade?

sobes.tech AI

Odpowiedź od AI

Tak, znam. To wzorzec projektowy strukturalny, który zapewnia zunifikowany interfejs do zestawu interfejsów w podsystemie. Definiuje interfejs wysokiego poziomu, który upraszcza korzystanie z podsystemu.

Cel:

  • Uproszczenie korzystania z złożonego podsystemu.
  • Zmniejszenie zależności między klientem a implementacją podsystemu.
  • Zapewnienie słabego powiązania.

Główne komponenty:

  1. Fasada (Facade): Zapewnia uproszczony interfejs dla podsystemu.
  2. Klasy podsystemu: Implementują funkcjonalność podsystemu, do której odwołuje się fasada.

Zastosowanie w Android:

  • Zarządzanie dostępem do złożonych API (np. obsługa multimediów, system plików, sieć), opakowując je w prostszy interfejs.
  • Tworzenie jednolitego punktu wejścia do wykonywania grupy powiązanych operacji.
// Przykład uproszczonej fasady do obsługi ustawień
class SettingsFacade(private val sharedPreferences: SharedPreferences) {

    fun saveStringSetting(key: String, value: String) {
        sharedPreferences.edit().putString(key, value).apply()
    }

    fun getStringSetting(key: String, defaultValue: String): String {
        return sharedPreferences.getString(key, defaultValue) ?: defaultValue
    }

    // Mogą być metody dla innych typów danych i ustawień
}

Zalety:

  • Upraszcza kod klienta, ukrywając złożoność podsystemu.
  • Zapewnia słabe powiązanie między klientem a klasami podsystemu.
  • Poprawia czytelność i utrzymanie kodu.

Wady:

  • Może stać się "ciężki", jeśli fasada będzie próbowała objąć zbyt wiele funkcji podsystemu.
  • Nie zapobiega bezpośredniemu dostępowi do klas podsystemu, jeśli klient chce korzystać z nich bezpośrednio.