Sobes.tech
Junior

Kāda ir abstrakcijas būtība?

sobes.tech AI

Atbilde no AI

Abstrakcija Flutter, kā arī programmēšanā kopumā, attiecas uz sarežģītas īstenošanas slēpšanu un vienkāršota saskarnes nodrošināšanu mijiedarbībai. To sasniedz, izveidojot augsta līmeņa attēlus, kas slēpj zemākās detaļas un ļauj strādāt ar koncepcijām, nevis ar konkrētu īstenojumu.

Galvenās idejas:

  • Detaļu slēpšana: Sarežģīta loģika vai datu struktūra tiek slēpta aiz vienkāršas saskarnes.
  • Vienkāršošana lietošanā: Izstrādātājs ar interfeisu sadarbojas, neiedziļinoties īstenošanas detaļās.
  • Elastības palielināšana: Iekšējās īstenošanas izmaiņas neietekmē kodu, kas izmanto abstrakciju, kamēr saskarne paliek nemainīga.
  • Pārlietojamības palielināšana: Abstraktas komponentes var tikt izmantotas dažādās lietojuma daļās.

Piemēri Flutter:

  • Vidi: Vidi ir abstrakcijas virs lietotāja saskarnes elementiem. Mēs izmantojam Container, Row, Column un citus, nezinot to iekšējo īstenojumu.
  • Asinhronā programmēšana: Future un Stream abstrahē darbu ar asinhronām operācijām, slēpjot darbu ar plūsmām un notikumiem.
  • Arhitektūras modeļi: Izmanto modeļus, piemēram, BLoC, Provider vai Riverpod, kas ir abstrakcijas forma, kas atdala UI un biznesa loģiku.

Piemērs ar abstrakcijas izmantošanu:

// Datu avota abstrakta klase
abstract class DataSource {
  Future<String> fetchData();
}

// Realizācija, kas izmanto HTTP
class HttpDataSource implements DataSource {
  @override
  Future<String> fetchData() async {
    // Šeit sarežģīta loģika ar HTTP pieprasījumiem
    return "Dati no HTTP";
  }
}

// Realizācija, kas izmanto lokālo glabātuvi
class LocalDataSource implements DataSource {
  @override
  Future<String> fetchData() async {
    // Šeit sarežģīta loģika ar lokālo glabātuvi
    return "Dati no lokālās glabātuves";
  }
}

// Klase, kas izmanto DataSource abstrakciju
class Repository {
  final DataSource dataSource;

  Repository(this.dataSource);

  Future<String> getData() {
    return dataSource.fetchData();
  }
}

Šajā piemērā Repository sadarbojas tikai ar DataSource abstrakciju, neuztraucoties par to, no kurienes tieši nāk dati (HTTP, lokālā glabātuve utt.). Tas ļauj viegli mainīt datu avotu, nemainot Repository kodu.