Sobes.tech
Junior — Middle

Можете ли да обясните концепцията за анемичен модел и в чем се състои?

sobes.tech AI

Отговор от AI

Анемичният модел (Anemic Domain Model) е анти-патърн в обектно-ориентираното проектиране, при който обектите съдържат само данни (полета) без бизнес логика, а цялата логика се реализира извън тези обекти, например в услуги или контролери.

Същността на анемичния модел е, че домейн обектите стават 'плоски' структури от данни, което противоречи на принципите на обектно-ориентирания дизайн, където данните и поведението трябва да бъдат инкапсулирани заедно. Това може да доведе до по-малко поддържан и по-малко разширяем код.

Пример за анемичен модел:

class User {
    var name: String
    var age: Int

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

// Логиката за проверка на възрастта е отделена
func isAdult(user: User) -> Bool {
    return user.age >= 18
}

В противоположност на това, в богат модел (Rich Domain Model), методът isAdult би бил част от класа User.