Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε την έννοια του αναιμικού μοντέλου και σε τι αφορά;

sobes.tech AI

Απάντηση από AI

Το αναιμικό μοντέλο (Anemic Domain Model) είναι ένα αντι-pattern στον αντικειμενοστραφή σχεδιασμό, όπου τα αντικείμενα περιέχουν μόνο δεδομένα (πεδία) χωρίς επιχειρηματική λογική, και όλη η λογική υλοποιείται εκτός αυτών των αντικειμένων, π.χ., σε υπηρεσίες ή ελεγκτές.

Η ουσία του αναιμικού μοντέλου είναι ότι τα αντικείμενα πεδίου γίνονται 'επίπεδες' δομές δεδομένων, κάτι που αντιβαίνει τις αρχές του αντικειμενοστραφούς σχεδιασμού, όπου τα δεδομένα και η συμπεριφορά πρέπει να είναι ενσωματωμένα μαζί. Αυτό μπορεί να οδηγήσει σε λιγότερο συντηρήσιμο και λιγότερο επεκτάσιμο κώδικα.

Παράδειγμα αναιμικού μοντέλου:

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.