Sobes.tech
Middle — Middle+

Դուք ունե՞ք հեքսագոնալ ճարտարապետության օգտագործմամբ ծրագրեր մշակելու կամ կիրառելու փորձ։

sobes.tech AI

Պատասխան AI-ից

Հեքսագոնալ ճարտարապետությունը (Hexagonal Architecture), որը նաև հայտնի է որպես պորտերի և ադապտերների ճարտարապետություն, նպատակ ունի առևտրային տրամաբանությունը առանձնացնել արտաքին համակարգերից և ենթակառուցվածքից:

Իմ փորձով Go-ով զարգացման ժամանակ, ես կիրառել եմ այս մոտեցումը՝ մոդուլային և հեշտորեն թեստավորվող հավելվածներ ստեղծելու համար: Հիմնական գաղափարը՝ առանձնացնել հավելվածի միջուկը (բիզնես տրամաբանությունը) և շփվել արտաքին աշխարհի հետ պորտեր (ինտերֆեյսներ) միջոցով, որոնք իրականացնում են ադապտերներ (օրինակ՝ տվյալների բազաներ, վեբ ծառայություններ, UI):

Կառուցվածքի օրինակ՝

  • Core (դոմեն): բիզնես տրամաբանություն, պորտերի ինտերֆեյսներ
  • Ադապտերներ: պորտերի իրականացմանները (պահոցներ, API, UI)
  • Դիմում: կապում է միջուկը ադապտերների հետ

Այս մոտեցումը հեշտացնում է թեստավորումը, կոմպոնենտների փոխարինումը և պահպանում է կոդի մաքուրությունը: Go-ում դա հեշտությամբ իրականացնում է ինտերֆեյսների և կոմպոզիցիայի միջոցով:

Նմուշ՝ պորտի և ադապտերի ինտերֆեյս:

// Պորտ
type UserRepository interface {
    GetUser(id string) (*User, error)
}

// Ադապտեր
type PostgresUserRepo struct {
    db *sql.DB
}

func (r *PostgresUserRepo) GetUser(id string) (*User, error) {
    // տվյալների բազայի մուտքի իրականացում
}

Այսպիսով, բիզնես տրամաբանությունը կախված է միայն ինտերֆեյսներից, իսկ կոնկրետ իրականացումները կարող են փոխվել առանց միջուկին ազդելու: