Toshkent axborot texnologiyalari universiteti dasturiy ta'minot arxitekturasi


Download 23.54 Kb.
bet5/7
Sana14.01.2022
Hajmi23.54 Kb.
#337055
1   2   3   4   5   6   7
DTA312Amaliy2
Bog'liq
2 5199664228046212137, bolalar anatomiyasi va fiziologiyasi asoslari fanini organish usullari, 1 4956737600724402347, 1 4956737600724402347, 1 4956737600724402347, 1 4956737600724402347, Азамат Файзуллаев, Hurshida oraliq, MUSTAQIL ISH, 2 5330100572349533156, kursdoshlar obyektivka, YPIP Application Sample, is gazi(1), is gazi(1), maruza matn
Interfeysni ajratish printsipi

Mijoz hech qachon foydalanmaydigan interfeysni tatbiq etishga majbur etilmasligi yoki mijozlar ularni ishlatmaydigan usullarga bog'liq bo'lishiga majbur qilinmasligi kerak.

Bizning shakllarimiz misolida davom etar ekanmiz, bizda ham qattiq shakllar borligini bilamiz, shuning uchun biz shaklning hajmini hisoblashni xohlaganimiz sababli, biz shaklga yana bir shartnoma qo'shishimiz mumkin Interface:

const shapeInterface = (holat) => ({

turi: 'shapeInterface',

maydon: () => holat.area (holat),

hajm: () => holat.volume (holat)

})

Biz yaratgan har qanday shakl tovush uslubiga mos kelishi kerak , ammo biz kvadratlarning tekis shakllar ekanligini va ularning hajmlari yo'qligini bilamiz, shuning uchun ushbu interfeys kvadrat fabrikasi funktsiyasini o'zi foydalanmaydigan usulni amalga oshirishga majbur qiladi .



Interfeysni ajratish printsipi bunga rad javobini beradi , aksincha siz qattiq interfeysni yaratishingiz mumkin , bu hajm interfeysi va kublar kabi qattiq shakllarga ega bo'lgan interfeysni amalga oshirishi mumkin.

const shapeInterface = (holat) => ({

turi: 'shapeInterface',

maydon: () => holat.area (holat)

})

const solidShapeInterface = (holat) => ({



turi: 'solidShapeInterface',

hajm: () => holat.volume (holat)

})

const cubo = (uzunlik) => {



const proto = {

uzunlik,

turi: 'Kubo',

maydon: (args) => Math.pow (args.length, 2),

hajm: (args) => Math.pow ( args.length, 3)

}

const asoslari = shapeInterface (proto)



const kompleksi = solidShapeInterface (proto)

const kompozit = Object.assign ({}, asoslar, kompleks)

return Object.assign (Object.create (composite), {length} )

}

Bu juda yaxshi yondashuv, ammo shaklInterface yoki solidShapeInterface- dan foydalanish o'rniga, bu miqdor uchun yig'indini hisoblashda ehtiyot bo'lish kerak .



Siz boshqa interfeysni yaratishingiz mumkin, ehtimol boshqarishShapeInterface va uni tekis va qattiq shakllarda amalga oshirishingiz mumkin, shu bilan siz shakllarni boshqarish uchun bitta API mavjudligini osongina ko'rishingiz mumkin, masalan:

const boshqarishShapeInterface = (fn) => ({

turi: 'boshqarishShapeInterface',

hisoblang: () => fn ()

})

const doirasi = (radius) => {



const proto = {

radius,


turi: 'Circle',

area: (args) => Math.PI * Math.pow (args.radius, 2)

}

const asoslari = shapeInterface (proto)



const abstraccion = manageShapeInterface (() => basics.area ())

const kompozit = Object.assign ({}, asoslar, abstraccion)

return Object.assign (Object.create (composite), {radius })

}

const cubo = (uzunlik) => {



const proto = {

uzunlik,

turi: 'Kubo',

maydon: (args) => Math.pow (args.length, 2),

hajm: (args) => Math.pow ( args.length, 3)

}

const asoslari = shapeInterface (proto)



const kompleksi = solidShapeInterface (proto)

const abstraccion = manageShapeInterface (

() => basics.area () + complex.volume ()

)

const kompozit = Object.assign ({}, asoslar, abstraktsiya)



qaytish Object.assign (Object.create (kompozit), {uzunlik})

}

Hozirgacha ko'rib turganingizdek, biz JavaScript-da interfeyslar uchun nima qildik, bu funktsiya tarkibi uchun zavod funktsiyalari.



Va bu erda, bilan manageShapeInterface biz yana ajratish bo'lib, nima qilyapsan hisoblash , biz bu erda nima vazifani, va boshqa interfeyslarni (Biz uni interfeysi qo'ng'iroq mumkin bo'lsa), biz "dan foydalanayotgan yuqori tartibi vazifalarni" soyutlamaları erishish uchun .

Agar buyurtma qanday yuqori ekanligini bilmasangiz, ushbu videoni tekshirib ko'rishingiz mumkin .




Download 23.54 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2022
ma'muriyatiga murojaat qiling