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 კლასის ნაწილი.