Middle
Poznáte vzor Facade?
sobes.tech AI
Odpoveď od AI
Áno, poznám to. Je to štruktúrny návrhový vzor, ktorý poskytuje zjednotený rozhranie pre sadu rozhraní v podsystéme. Definuje rozhranie na vysokej úrovni, ktoré uľahčuje používanie podsystému.
Cieľ:
- Zjednodušiť používanie zloženého podsystému.
- Znížiť závislosť medzi klientom a implementáciou podsystému.
- Zabezpečiť slabé prepojenie.
Hlavné komponenty:
- Fasáda (Facade): Poskytuje zjednodušené rozhranie pre podsystém.
- Triedy podsystému: Implementujú funkčnosť podsystému, na ktorú sa odvoláva fasáda.
Použitie v Androide:
- Správa prístupu ku komplexným API (napríklad práca s médiami, súborovým systémom, sieťou), zabalí ich do jednoduchšieho rozhrania.
- Vytvorenie jednotného vstupného bodu na vykonanie skupiny súvisiacich operácií.
// Príklad zjednodušenej fasády pre prácu s nastaveniami
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
}
// Môžu byť metódy pre iné typy dát a nastavenia
}
Výhody:
- Zjednodušuje klientsky kód, skrýva zložitosť podsystému.
- Zabezpečuje slabé prepojenie medzi klientom a triedami podsystému.
- Zlepšuje čitateľnosť a udržiavateľnosť kódu.
Nevýhody:
- Môže sa stať "ťažkým", ak fasáda sa snaží pokryť príliš veľa funkcií podsystému.
- Nezabraňuje priamej prístupu ku triedam podsystému, ak ich klient chce použiť priamo.