Sobes.tech
Junior — Middle

Czy możesz wyjaśnić koncepcję modelu anemicznego i na czym polega?

sobes.tech AI

Odpowiedź od AI

Anemiczny model (Anemic Domain Model) to antywzorzec w projektowaniu obiektowym, w którym obiekty zawierają tylko dane (pola) bez logiki biznesowej, a cała logika jest implementowana poza tymi obiektami, na przykład w serwisach lub kontrolerach.

Istota anemicznego modelu polega na tym, że obiekty domenowe stają się 'płaskimi' strukturami danych, co jest sprzeczne z zasadami projektowania obiektowego, gdzie dane i zachowanie powinny być enkapsulowane razem. Może to prowadzić do kodu mniej łatwego w utrzymaniu i mniej rozszerzalnego.

Przykład anemicznego modelu:

class User {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

// Logika sprawdzania wieku jest oddzielona
func isAdult(user: User) -> Bool {
    return user.age >= 18
}

W przeciwieństwie do tego, w bogatym modelu (Rich Domain Model) metoda isAdult byłaby częścią klasy User.