Sobes.tech
Junior — Middle
102

Доменге бағытталған даму тұжырымдамасын түсіндіре аласыз ба?

AI-дан жауап

sobes.tech AI

Домен-бағытталған жобалау (Domain-Driven Design, DDD) — бұл пәндік саланы терең түсінуге және бағдарламалық қамтамасыз етуді осы саланың моделін айналдыруға бағытталған тәсіл. Негізгі идея — бизнес логиканы көрсететін анық, экспрессивті модель құру, ол кодтың негізі болады.

DDD-да негізгі элементтер бөлінеді:

  • Объектілер (Entities) — жүйеге маңызды бірегейлігі бар объектілер.
  • Мәндік объектілер (Value Objects) — бірегейлігі жоқ, қасиеттерімен сипатталатын объектілер.
  • Агрегаттар (Aggregates) — байланысты объектілер тобы, олар бір бүтін ретінде қарастырылады.
  • Репозиторийлер (Repositories) — агрегаттарға қол жеткізу интерфейстері.
  • Қызметтер (Services) — нақты объектілерге тиесілі емес операциялар.

Python-да мысал (қарапайым):

from dataclasses import dataclass

@dataclass(frozen=True)
class Money:
    amount: float
    currency: str

class Account:
    def __init__(self, account_id: str, balance: Money):
        self.account_id = account_id
        self.balance = balance

    def deposit(self, money: Money):
        if money.currency != self.balance.currency:
            raise ValueError("Валюта сәйкессіздігі")
        self.balance = Money(self.balance.amount + money.amount, self.balance.currency)

# Аккаунттарға қол жеткізу үшін репозиторий
class AccountRepository:
    def __init__(self):
        self._storage = {}

    def save(self, account: Account):
        self._storage[account.account_id] = account

    def get(self, account_id: str) -> Account:
        return self._storage.get(account_id)

Осылайша, DDD бизнес логиканы көрсететін код құруға көмектеседі және жүйені қолдау мен дамыту процесін жеңілдетеді.