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.