Цус багатай домэйн загвар нь эсрэг загвар биш, харин SOLID зарчим дээр суурилсан архитектур юм. Домэйн тулгуурласан дизайн: Домэйн үүсгэх

Цус багадалт - Англи хуудас

Цус багадалт

Энэхүү вэб сайт нь цус багадалтын янз бүрийн төрлүүдийн талаарх өвчтөнүүдийн мэдээллийг толилуулж байна. Үүнийг ОХУ-д цусны эмгэг судлаач эмч нар бий болгосон.
Хэрэв танд энэ нөөцтэй холбоотой асуулт байвал бидэнтэй цахим шуудангаар эсвэл утсаар (+7-495-741-06-41) холбоо барина уу.

Хэрэв та цус багадалттай бол хүмүүс таныг ядарсан цустай гэж хэлж болно. Учир нь цус багадалт буюу цус багадалт нь таны эд эсэд хангалттай хүчилтөрөгч тээвэрлэх эрүүл цусны улаан эсүүд хангалтгүй байдаг нь таныг ядрахад хүргэдэг.

Цус багадалтын олон хэлбэр байдаг бөгөөд тус бүр өөрийн гэсэн шалтгаантай байдаг. Цус багадалт нь түр зуурын эсвэл урт хугацааны байж болох ба хөнгөнөөс хүнд хүртэл байж болно.

Цус багадалт бол нийтлэг цусны эмгэг юм. Архаг өвчтэй эмэгтэйчүүд, хүмүүс энэ өвчний эрсдэл өндөр байдаг.

Хэрэв та цус багадалттай гэж сэжиглэж байгаа бол эмчид хандаарай. Цус багадалт нь ноцтой өвчний шинж тэмдэг байж болно. Цус багадалтын эмчилгээ нь нэмэлт тэжээл авахаас эхлээд эмчилгээний арга хэмжээ авах хүртэл байдаг. Та эрүүл, олон төрлийн хооллолт хийснээр зарим төрлийн цус багадалтаас урьдчилан сэргийлэх боломжтой.

Шинж тэмдэг

Ихэнх төрлийн цус багадалтын гол шинж тэмдэг нь ядрах юм. Цус багадалтын бусад шинж тэмдгүүд нь:

  • Сул тал
  • Цайвар арьс
  • Хурдан эсвэл тогтмол бус зүрхний цохилт
  • Амьсгал давчдах
  • Цээжний өвдөлт
  • Толгой эргэх
  • Танин мэдэхүйн асуудлууд
  • Таны мөчид мэдээ алдаж эсвэл хүйтэн байна
  • Толгой өвдөх

Эхэндээ цус багадалт нь маш хөнгөн бөгөөд анзаарагдахгүй байдаг. Гэвч нөхцөл байдал муудах тусам шинж тэмдгүүд нэмэгддэг.

Шалтгаанууд

Цус нь плазм болон эс гэж нэрлэгддэг шингэнээс бүрддэг. Цусны сийвэн дотор гурван төрлийн цусны эсүүд хөвдөг.

  • Цусны цагаан эсүүд.Эдгээр цусны эсүүд халдвартай тэмцдэг.
  • тромбоцитууд.Эдгээр цусны эсүүд нь зүссэний дараа цусны бүлэгнэхэд тусалдаг.
  • Цусны улаан эс (эритроцит).Эдгээр цусны эсүүд нь таны уушигнаас хүчилтөрөгчийг цусны урсгалаар дамжуулан тархи болон бусад эрхтэн, эд эсэд хүргэдэг. Таны бие ажиллахын тулд хүчилтөрөгчөөр хангагдсан цус хэрэгтэй. Хүчилтөрөгчөөр баялаг цус нь таны биеийг эрч хүчээр дүүргэж, арьсыг эрүүл гэрэлтүүлэхэд тусалдаг.

Цусны улаан эсүүд гемоглобин агуулдаг - улаан, төмрөөр баялаг уураг нь цусыг улаан өнгөтэй болгодог. Гемоглобин нь цусны улаан эсийг уушигнаас хүчилтөрөгчийг биеийн бүх хэсэгт зөөвөрлөж, бусад хэсгээс уушгинд нүүрстөрөгчийн давхар ислийг зөөвөрлөж, амьсгалах боломжийг олгодог.

Цусны ихэнх эсүүд, түүний дотор цусны улаан эсүүд таны ясны чөмөгт тогтмол үүсдэг бөгөөд энэ нь таны олон том ясны хөндийд байдаг улаан, хөвөн хэлбэртэй материал юм. Гемоглобин болон цусны улаан эсийг үйлдвэрлэхийн тулд таны биед төмөр, уураг, таны идэж буй хоол хүнснээс витамин хэрэгтэй.

Цус багадалт нь цусны улаан эсийн тоо эсвэл тэдгээрийн доторх гемоглобины хэмжээ хэвийн хэмжээнээс доогуур байгаа төлөв юм. Цус багадалттай үед таны бие эрүүл цусны улаан эсийг хэт цөөхөн үйлдвэрлэж, хэт их хэмжээгээр алдаж эсвэл нөхөхөөс илүү хурдан устгадаг. Үүний үр дүнд таны цусанд хүчилтөрөгчийг эд эс рүү зөөвөрлөхийн тулд цусны улаан эсүүд багасдаг. Цус багадалтын нийтлэг төрлүүд ба тэдгээрийн шалтгаанууд нь:

    Төмрийн дутагдлын цус багадалт.Цус багадалтын энэ хамгийн түгээмэл хэлбэр нь АНУ-д таван эмэгтэй тутмын нэг, жирэмсэн эмэгтэйчүүдийн тал хувь, эрэгтэйчүүдийн 3 хувьд нөлөөлдөг. Үүний шалтгаан нь таны биед төмрийн элементийн дутагдал юм. Таны ясны чөмөг гемоглобин үүсгэхийн тулд төмөр хэрэгтэй. Хангалттай төмөр байхгүй бол таны бие цусны улаан эсэд хангалттай гемоглобин үүсгэж чадахгүй бөгөөд үүний үр дүнд төмрийн дутагдлын цус багадалт үүсдэг.

    Цусны эсүүд үхэх үед таны биед шаардлагатай төмрийг авах нэг арга байдаг - тэдгээрт агуулагдах төмрийг дахин боловсруулж, шинэ цусны эсийг бий болгоход ашигладаг. Тиймээс цус алдвал төмөр алдагдана. Сарын тэмдгийн үеэр их хэмжээний цус алддаг сарын тэмдэг ихтэй эмэгтэйчүүд төмрийн дутагдлын цус багадалт үүсэх эрсдэлтэй байдаг. Шарх, бүдүүн гэдэсний полип, тэр ч байтугай бүдүүн гэдэсний хорт хавдар гэх мэт биеийн доторх эх үүсвэрээс удаан, архаг цус алдах нь төмрийн алдагдал, төмрийн дутагдлын цус багадалтад хүргэдэг.

    Мөн таны бие таны идэж буй хоол хүнснээс төмрийг авдаг. Төмрийн дутагдалтай хоолны дэглэм нь ийм цус багадалт үүсгэдэг. Жирэмсэн эмэгтэйд өсөн нэмэгдэж буй ураг эхийн төмрийн нөөцийг шавхаж, төмрийн дутагдлын цус багадалт үүсгэдэг.

  • Витамин дутагдлын цус багадалт.Эрүүл цусны улаан эсийг хангалттай хэмжээгээр бий болгохын тулд таны биед төмрөөс гадна фолат болон витамин В-12 хэрэгтэй. Эдгээр болон бусад үндсэн тэжээллэг бодисууд дутагдсан хоолны дэглэм нь цусны улаан эсийн үйлдвэрлэл буурахад хүргэдэг. Шим тэжээлийг шингээхэд нөлөөлдөг гэдэсний эмгэгтэй хүмүүс энэ төрлийн цус багадалтанд өртөмтгий байдаг. Зарим хүмүүс янз бүрийн шалтгааны улмаас витамин В-12-ыг шингээж чадахгүй, В-12 витамины дутагдлын цус багадалт үүсгэдэг бөгөөд үүнийг заримдаа хор хөнөөлтэй цус багадалт гэж нэрлэдэг. Витамин дутагдлын цус багадалт нь мегалобластик цус багадалт гэж нэрлэгддэг цус багадалтуудын бүлэгт багтдаг бөгөөд ясны чөмөг нь том, хэвийн бус улаан цусны эсийг үүсгэдэг.
  • Архаг өвчний цус багадалт.Хорт хавдар, ревматоид артрит, Кроны өвчин болон бусад архаг үрэвсэлт өвчин зэрэг нь цусны улаан эсийн үйлдвэрлэлд саад учруулж, улмаар бөөрний архаг дутагдал нь цус багадалт үүсгэдэг эритропоэтин, таны ясны чөмөг цусны улаан эсийг үүсгэдэг.
  • Апластик цус багадалт.Энэ нь ясны чөмөгний цусны улаан эс, цагаан эс, ялтас гэсэн гурван төрлийн цусны эсийг үйлдвэрлэх чадвар буурсантай холбоотой амь насанд аюултай цус багадалт юм. Ихэнх тохиолдолд апластик цус багадалтын шалтгаан тодорхойгүй байдаг. Энэ нь ихэвчлэн аутоиммун өвчин гэж үздэг. Энэ төрлийн цус багадалтад нөлөөлж болох зарим хүчин зүйлүүд нь хими эмчилгээ, туяа эмчилгээ, хүрээлэн буй орчны хорт бодис, жирэмслэлт, чонон яр зэрэг орно.
  • Цус багадалтаас өмнөх өвчин болох лейкеми, миелодисплази зэрэг янз бүрийн өвчин нь ясны чөмөг дэх цусны үйлдвэрлэлд сөргөөр нөлөөлж цус багадалт үүсгэдэг. Эдгээр төрлийн хорт хавдар болон хорт хавдартай төстэй эмгэгүүдийн нөлөө нь цусны үйлдвэрлэлд бага зэргийн өөрчлөлт орохоос эхлээд цус үүсгэх үйл явцыг бүрэн зогсоох хүртэл, амь насанд аюултай. Нэмж дурдахад олон миелома, миелопролифератив эмгэг, лимфома зэрэг цус, ясны чөмөгний бусад хорт хавдар нь цус багадалт үүсгэдэг.
  • Гемолитик цус багадалт.Энэ бүлгийн цус багадалт нь цусны улаан эсийг ясны чөмөг орлуулахаас илүү хурдан устгасан үед үүсдэг. Цусны зарим өвчин нь цусны улаан эсийг устгахад хүргэдэг. Аутоиммун эмгэгүүд нь таны биеийг цусны улаан эсэд эсрэгбие үүсгэж, тэдгээрийг эрт устгадаг. Халдварыг эмчлэхэд хэрэглэдэг антибиотик зэрэг зарим эм нь цусны улаан эсийг задалдаг. Цус задралын цус багадалт нь арьсны шаргал (шарлалт), дэлүү томрох шалтгаан болдог.
  • Хадуур эсийн цус багадалт.Африк, араб гаралтай хүмүүст голчлон нөлөөлдөг энэхүү удамшлын, заримдаа ноцтой цус багадалт нь цусны улаан эсийг хэвийн бус хавирган сар (хадуур) хэлбэртэй болгоход хүргэдэг гемоглобины дутагдалтай хэлбэрийн улмаас үүсдэг. Эдгээр жигд бус хэлбэрийн улаан эсүүд эрт үхдэг бөгөөд үүний үр дүнд цусны улаан эсийн архаг дутагдал үүсдэг. Хадуур хэлбэртэй улаан цусны эсүүд нь биеийн жижиг судсаар дамжин цусны урсгалыг хааж, бусад, ихэвчлэн өвдөлттэй шинж тэмдгүүдийг үүсгэдэг.
  • Бусад цус багадалт.Цус багадалтын бусад хэд хэдэн ховор хэлбэрүүд байдаг, тухайлбал талассеми, гемоглобины дутагдлаас үүдэлтэй цус багадалт.

Заримдаа цус багадалтын шалтгааныг тодорхойлох боломжгүй байдаг.

Эрсдлийн хүчин зүйлүүд

Эдгээр хүчин зүйлүүд нь цус багадалт үүсэх эрсдлийг нэмэгдүүлдэг.

  • Буруу хооллолт.Хоолны дэглэм нь төмөр, витамин, ялангуяа фолийн хүчил бага байдаг залуу, хөгшин хүн бүр цус багадалт үүсэх эрсдэлтэй байдаг. Таны биед хангалттай хэмжээний улаан эсийг бий болгохын тулд төмөр, уураг, витамин шаардлагатай байдаг.
  • Гэдэсний эмгэг.Кроны өвчин, целийн өвчин гэх мэт нарийн гэдсэнд шим тэжээл шингээхэд муугаар нөлөөлдөг гэдэсний эмгэг нь шим тэжээлийг шингээж авдаг нарийн гэдэсний хэсгүүдийг мэс заслын аргаар зайлуулах эсвэл цус багадалт хийх эрсдэлтэй байдаг. дутагдал, цус багадалт.
  • Сарын тэмдэг.Ерөнхийдөө эмэгтэйчүүд төмрийн дутагдлын цус багадалтаар эрэгтэйчүүдээс илүү эрсдэлтэй байдаг. Энэ нь сарын тэмдгийн үеэр эмэгтэйчүүд цус, түүнтэй хамт төмрийг алддагтай холбоотой юм.
  • Жирэмслэлт.Жирэмсэн эмэгтэйчүүд төмрийн дутагдлын цус багадалтаар өвчлөх эрсдэлтэй байдаг, учир нь тэдний төмрийн нөөц нь эхийн цусны хэмжээг нэмэгдүүлэхээс гадна ургийн гемоглобины эх үүсвэр болдог.
  • Архаг нөхцөл байдал.Жишээлбэл, хэрэв та хорт хавдар, бөөр, элэгний дутагдал эсвэл өөр архаг өвчтэй бол архаг өвчний цус багадалт гэж нэрлэгддэг өвчинд нэрвэгдэх эрсдэлтэй байж болно. Эдгээр нөхцөл байдал нь цусны улаан эсийн дутагдалд хүргэдэг. Удаан, архаг цусны алдагдал Бие дэхь шархлаа болон бусад эх үүсвэрээс төмрийн нөөцийг шавхаж, төмрийн дутагдлын цус багадалт үүсгэдэг.
  • Гэр бүлийн түүх.Хэрэв танай гэр бүл удамшлын цус багадалттай байсан бол энэ өвчний эрсдэл нэмэгддэг.

Зарим халдвар, цусны өвчин, аутоиммун эмгэг, химийн хорт бодист өртөх, зарим эм хэрэглэх нь цусны улаан эсийн үйлдвэрлэлд нөлөөлж, цус багадалт үүсгэдэг. Цус багадалт үүсэх эрсдэлтэй бусад хүмүүс бол чихрийн шижин өвчтэй хүмүүс, архины хамааралтай хүмүүс (архи нь фолийн хүчлийг шингээхэд саад учруулдаг) болон хатуу цагаан хоолны дэглэм баримталдаг, төмөр, витамин В-12-ыг хангалттай хэмжээгээр авч чаддаггүй хүмүүс юм. хоолны дэглэм.

Хэзээ эмчээс зөвлөгөө авах вэ

Хэрэв та тодорхойгүй шалтгаанаар ядарч сульдаж байвал, ялангуяа цус багадалт үүсэх эрсдэлтэй бол эмчид хандаарай. Зарим цус багадалт, тухайлбал төмрийн дутагдлын цус багадалт түгээмэл байдаг. Гэхдээ та ядарсан бол цус багадалттай байх ёстой гэж битгий бодоорой. Ядаргаа нь цус багадалтаас гадна олон шалтгаантай байдаг.

Зарим хүмүүс цусаа өгөхөөр очихдоо гемоглобин нь бага байгаа нь цус багадалт байгааг илтгэдэг. Бага гемоглобин нь төмрөөр баялаг хоол хүнс идэх эсвэл төмөр агуулсан олон төрлийн амин дэм хэрэглэх замаар арилдаг түр зуурын асуудал байж болно. Гэсэн хэдий ч энэ нь таны биед төмрийн дутагдалд хүргэж болзошгүй цус алдалтаас сэрэмжлүүлэх дохио байж болно. Хэрэв таныг гемоглобин багатай тул цусаа өгөх боломжгүй гэж хэлвэл санаа зовж байгаа эсэхийг эмчээсээ асуугаарай.

Хэрэв та гэр бүлийн түүхтэй бол хадуур эсийн цус багадалт гэх мэт удамшлын цус багадалттай бол өөрийн эрсдэл, үр хүүхдэдээ ямар эрсдэл дамжих талаар эмч, магадгүй генетикийн зөвлөхтэйгээ ярилцаарай.

Туршилт, оношлогоо

Эмч нар цус багадалтыг өвчний түүх, биеийн үзлэг, цусны шинжилгээ, түүний дотор цусны ерөнхий шинжилгээ (CBC) ашиглан оношлодог. Энэхүү цусны шинжилгээ нь цусан дахь улаан эс болон гемоглобины түвшинг хэмждэг. Цусны зарим хэсгийг микроскопоор шалгаж, цусны улаан эсийн хэмжээ, хэлбэр, өнгийг судлах боломжтой бөгөөд энэ нь оношийг илтгэнэ. Жишээлбэл, төмрийн дутагдлын цус багадалтын үед цусны улаан эсүүд хэвийн хэмжээнээс жижиг, цайвар өнгөтэй байдаг. Витамин дутагдлын цус багадалтын үед цусны улаан эсүүд томорч, тоо нь бага байдаг.

Хэрэв танд цус багадалт оношлогдсон бол эмч тань үндсэн шалтгааныг тогтоохын тулд нэмэлт шинжилгээ өгч болно. Жишээлбэл, төмрийн дутагдлын цус багадалт нь мэдэгдэж байгаа эсвэл үл мэдэгдэх шархлааны архаг цус алдалт, бүдүүн гэдэсний хоргүй полип, бүдүүн гэдэсний хорт хавдар, хавдар, бөөрний дутагдлын үр дүнд үүсдэг. Таны эмч эдгээр болон цус багадалтын суурь байж болох бусад нөхцөл байдлыг шалгаж болно.

Заримдаа цус багадалтыг оношлохын тулд ясны чөмөгний дээжийг судлах шаардлагатай байж болно.

Хүндрэлүүд

Цус багадалт хангалттай хүнд байвал өдөр тутмын ажлаа хийхэд тань саад болж болзошгүй. Та ажил хийх эсвэл тоглоход хэтэрхий ядарсан байж магадгүй. Цус багадалт нь ихэвчлэн эмчлэх боломжтой байдаг ч эмчилгээний дараа цусны улаан эсийн түвшин хэвийн хэмжээнд эргэж орох хүртэл хэдэн долоо хоногоос хэдэн сар хүртэл хугацаа шаардагдана. Эмчилгээнээс юу хүлээж байгааг эмчээсээ асуу.

Хэрэв та цус багадалттай гэж оношлогдсон бол энэ нь ердийн цусны шинжилгээнд ихэвчлэн илэрдэг - эмчээсээ ямар эмчилгээ шаардлагатайг асуугаарай. Дараа нь хурдан сайжирч эхэлсэн ч эмчилгээгээ үргэлжлүүлээрэй. Цус багадалт нь хяналтгүй орхивол зүрхний хэмнэл алдагдах, хурдан эсвэл тогтмол бус цохилтонд хүргэдэг. Цус багадалттай үед таны зүрх цусан дахь хүчилтөрөгчийн дутагдлыг нөхөхийн тулд илүү их цус шахах ёстой. Энэ нь зүрхний дутагдалд ч хүргэж болзошгүй. Эмчилгээ хийгээгүй хор хөнөөлтэй цус багадалт нь мэдрэлийг гэмтээж, сэтгэцийн үйл ажиллагаа буурахад хүргэдэг, учир нь витамин В-12. цусны улаан эсийг эрүүл байлгахаас гадна мэдрэлийн болон тархины оновчтой үйл ажиллагаанд чухал ач холбогдолтой.

Хадуур эсийн цус багадалт зэрэг зарим удамшлын цус багадалт нь ноцтой бөгөөд амь насанд аюултай хүндрэл үүсгэдэг. Хурдан их хэмжээний цус алдах нь цочмог, хүнд хэлбэрийн цус багадалт үүсгэдэг бөгөөд үхэлд хүргэдэг.

Эмчилгээ ба эм

Цус багадалтын эмчилгээ нь шалтгаанаас хамаарна.

  • Төмрийн дутагдлын цус багадалт.Цус багадалтын энэ хэлбэрийг төмрийн бэлдмэлээр эмчилдэг бөгөөд та үүнийг хэдэн сар ба түүнээс дээш хугацаанд хэрэглэх шаардлагатай болдог. Хэрэв төмрийн дутагдлын үндсэн шалтгаан нь сарын тэмдэгээс бусад тохиолдолд цус алдах юм бол цус алдалтын эх үүсвэрийг олж, зогсоох шаардлагатай. Үүнд мэс засал орно.
  • Витамин дутагдлын цус багадалт.Хортой цус багадалтыг В-12 витамины тарилга, ихэвчлэн насан туршийн тарилга хийдэг. Фолийн хүчлийн дутагдлын цус багадалтыг фолийн хүчлийн нэмэлтээр эмчилдэг.
  • Архаг өвчний цус багадалт.Энэ төрлийн цус багадалтын тусгай эмчилгээ байдаггүй. Эмч нар үндсэн өвчнийг эмчлэхэд анхаарлаа хандуулдаг. Төмрийн бэлдмэл, витаминууд энэ төрлийн цус багадалтад тус болохгүй. Гэсэн хэдий ч шинж тэмдгүүд нь хүндэрвэл цус сэлбэх эсвэл бөөрөнд үүсдэг синтетик эритропоэтин даавар тарилга нь цусны улаан эсийн үйлдвэрлэлийг идэвхжүүлж, ядаргаа тайлахад тусалдаг.
  • Апластик цус багадалт.Энэхүү ноцтой цус багадалтын эмчилгээнд цусны улаан эсийн түвшинг нэмэгдүүлэхийн тулд цус сэлбэх орно. Хэрэв таны ясны чөмөг өвдөж, эрүүл цусны эсийг үүсгэж чадахгүй бол ясны чөмөг шилжүүлэн суулгах мэс засал хийлгэх шаардлагатай байж магадгүй. Таны дархлааны тогтолцооны хариу урвалыг бууруулж, шилжүүлэн суулгасан чөмөг дахин ажиллаж эхлэх боломжийг олгохын тулд дархлаа дарангуйлах эм хэрэглэх шаардлагатай байж магадгүй юм.
  • Ясны чөмөгний өвчинтэй холбоотой цус багадалт.Эдгээр янз бүрийн өвчний эмчилгээ нь энгийн эмээс эхлээд химийн эмчилгээ, ясны чөмөг шилжүүлэн суулгах хүртэл янз бүр байж болно. Эдгээр төрлийн цус багадалтыг эмчлэх нь ихэвчлэн цусны мэргэжилтэн (гематологич) -аас зөвлөгөө авдаг.
  • Гемолитик цус багадалт.Цус задралын цус багадалттай тэмцэх нь сэжигтэй эм хэрэглэхээс зайлсхийх, холбогдох халдварыг эмчлэх, цусны улаан эсийг довтолж болзошгүй дархлааны системийг дарангуйлах эм уух зэрэг орно. Стероид эсвэл гамма глобулинтай богино хугацааны эмчилгээ нь таны дархлааны тогтолцооны цусны улаан эсэд үзүүлэх дайралтыг дарахад тусална. Хэрэв энэ эмгэг нь дэлүү томрох шалтгаан болсон бол та дэлүүгээ зайлуулах шаардлагатай байж магадгүй. Дэлүү нь таны доорх жижиг эрхтэн юм. зүүн талын хавирганы тор - гэмтэлтэй улаан эсийг шүүж, хадгалдаг.
  • Хадуур эсийн цус багадалт.Энэхүү эдгэршгүй цус багадалтын эмчилгээнд өвдөлт намдаах, хүндрэлээс урьдчилан сэргийлэхийн тулд хүчилтөрөгч, өвдөлт намдаах эм, амны хөндийн болон судсанд шингэн тариулж болно. Мөн эмч нар ихэвчлэн цус сэлбэх, фолийн хүчлийн бэлдмэл, антибиотик хэрэглэдэг. Ясны чөмөг шилжүүлэн суулгах нь зарим тохиолдолд үр дүнтэй эмчилгээ байж болно. Гидроксиуреа (Droxia, Hydrea) хэмээх хорт хавдрын эмийг насанд хүрэгчдэд хадуур эсийн цус багадалтыг эмчлэхэд мөн хэрэглэдэг.

Урьдчилан сэргийлэх

Олон төрлийн цус багадалтаас урьдчилан сэргийлэх боломжгүй боловч төмөр, фолийн хүчил, витамин В-12 агуулсан эрүүл, олон төрлийн хоол хүнс хэрэглэснээр төмрийн дутлын цус багадалт болон витамин дутагдлын цус багадалтаас сэргийлж чадна.

Төмрийн хамгийн сайн эх үүсвэр бол үхрийн мах болон бусад мах юм. Бусад төмрөөр баялаг хүнсний бүтээгдэхүүнд шош, сэвэг зарам, төмрөөр баяжуулсан үр тариа, хар ногоон навчит ногоо, хатаасан жимс, самар, үр орно. Фолат болон түүний синтетик хэлбэр болох фолийн хүчил нь цитрусын шүүс, жимс жимсгэнэ, хар ногоон навчит ногоо, буурцагт ургамал, баяжуулсан өглөөний цайны үр тарианаас олддог. В-12 витамин нь мах, сүүн бүтээгдэхүүнд маш их байдаг. Цитрус зэрэг витамин С агуулсан хоол хүнс нь төмрийн шингээлтийг нэмэгдүүлэхэд тусалдаг.

Төмөр агуулсан хоол хүнсийг их хэмжээгээр хэрэглэх нь төмрийн хэрэгцээ ихтэй хүмүүс, тухайлбал хүүхэд - өсөлтийн үед төмөр шаардлагатай байдаг - жирэмсэн болон сарын тэмдэгтэй эмэгтэйчүүдэд маш чухал юм. Нярай хүүхэд, хатуу цагаан хоолтон, холын зайн гүйлтийн тамирчдын хувьд төмрийн хангалттай хэрэглээ нь маш чухал юм.

Эмч нар төмрийн өндөр хэрэгцээтэй хүмүүст төмрийн бэлдмэл эсвэл төмрийн агуулсан олон төрлийн амин дэмийг зааж өгч болно. Гэхдээ тэнцвэртэй хооллолтоос илүү их төмөр шаардлагатай үед л төмрийн бэлдмэл хэрэглэх нь тохиромжтой. Хэрэв та ядарсан бол төмрийн бэлдмэл уух хэрэгтэй гэж битгий бодоорой. Биедээ төмрөөр хэт их ачаалал өгөх нь аюултай.

Энэ хуудсыг бэлтгэхдээ майоклиникийн мэдээллийг ашигласан болно

Цус багатай домайн загвар

Хэрэв таны домэйн объектууд нь өгөгдлийн контейнер бөгөөд тэдгээрт байгаа бүх зүйл нь авах/тогтоох шинж чанарууд юм бол та цус багадалттай домэйн загварыг ашиглаж байна. Үүний онцлог нь домэйн объект нь зан төлөвгүй байдаг.

Даалгавар

Жишээлбэл, онлайн дэлгүүрт зориулсан хувилбаруудыг ашигла:

  1. Системд бүртгүүлсэн хэрэглэгч бүртгэлээ баталгаажуулах холбоос бүхий имэйл хүлээн авна. Холбоос дээр дарснаар тэрээр бүртгэлээ баталгаажуулж, нэвтрэх нэр, нууц үгээ ашиглан системд нэвтэрч болно.
  2. Хэрэглэгч захиалга өгөх боломжтой
  3. Үүний зэрэгцээ тэрээр хувийн дансандаа захиалсан нийт дүнгээ хардаг. Одоогийн захиалгын нийт дүн нь аль хэдийн дууссан захиалгыг тооцохгүй

Цус багадалтын өгөгдлийн загвараас эхэлье. Бид дансны ангитай болно:

Нийтийн анги Бүртгэл ( public int Id ( авах; тохируулах; ) public bool IsApproved ( авах; тохируулах; ) нийтийн DateTime? ActivationDate ( авах; тохируулах; ) нийтийн жагсаалт Захиалга (авах; тохируулах;))

Мөн захиалгын ангилал:

Public class Order ( public int Id ( get; set; ) public int Price ( get; set; ) public Account Account ( get; set; ) public bool IsComplete ( get; set; ) )

Хэрэгжилт

Ажлын хувилбар бүрийг хэрэгжүүлэхэд маш энгийн:

Хувилбар №1. Хэрэглэгчийн идэвхжүүлэлт

Account.ActivationDate = DateTime.Now; account.IsApproved = үнэн;

Хувилбар №2. Захиалга нэмж байна

Бүртгэл.Захиалга.Нэмэх(захиалга); order.Account = account;

Хувилбар №3. Нийт дүнг тооцоолж байна

Данс.Захиалга .Хаана(захиалга => захиалга.Бүрэн гүйцээсэн == худал) .Нийт (захиалга => захиалга.Үнэ);

Гол асуулт бол энэ кодыг хаана байрлуулах вэ?

Шийдэл №0

Хамгийн энгийн бөгөөд буруу шийдэл байдаг. Бид энэ кодыг aspx хуудас эсвэл WinForms дээрх зохицуулагчид шууд бичих болно.

Нийтийн хэсэгчилсэн анги Өгөгдмөл: Хуудас ( хамгаалагдсан хүчингүй Page_Load(объект илгээгч, EventArgs e) ( // дансны объектыг сонгох AccountOrdersSumLabel.Text = account.Orders .Хаана(захиалга => order.IsComplete == false) .Sum(order => order .Price); ) хамгаалагдсан хүчингүй AddOrderButton_Click(объект илгээгч, EventArgs e) ( // дансны объектыг сонгох.Orders.Add(order); order.Account = account; // дансны объектыг хадгалах ) )

Бүтээгдэхүүнийг зөвхөн энэ маягтаас нэмж оруулах боломжтой бөгөөд нийт дүнг зөвхөн энэ томъёог ашиглан тооцдог бол бүх зүйл сайхан болно. Өөр хэлбэр нь ижил функцийг шаарддаг үед асуудал эхэлнэ. Та кодыг хуулбарлах хэрэгтэй болно. Дараа нь, хэрэв үйлдлийн логик өөрчлөгдвөл та бүх кодын ард үүнийг засах хэрэгтэй болно.

Кодыг хуулбарлаад дараа нь өөрчилсөн бизнесийн шаардлагыг засахад маш их цаг зарцуулах нь тэнэг хэрэг.

Шийдэл №1

Гэсэн хэдий ч бид хуулбарлахгүй. Бид скриптүүдийг хэрэгжүүлэх кодыг AccountHelper эсвэл AccountManager нэртэй ангид оруулах болно. Энэ анги нь харьяалалгүй тул статик байх магадлалтай.

Бид авах:

Нийтийн статик анги AccountHelper ( public static void Activate(Account account) ( account.ActivationDate = DateTime.Now; account.IsApproved = true; ) public static void AddOrder(Account account, Order order) ( account.Orders.Add(order); order.Account = account; ) public static int CalculateOrdersSum(Account account) ( буцах данс.Orders .Хаана(захиалга => захиалга.IsComplete == false) .Sum(order => order.Price); ) )

*Helper эсвэл *Meneger гэж нэрлэгддэг ангиудын асуудал нь тэд хүссэн бүхнээ хийх боломжтой байдаг. Тэдний хийсвэр нэрс нь Account ангид огт өөр зүйл хийхэд "туслах" боломжийг олгодог. Ийм ангиуд болдог.

Ийм ангиуд нь олон сул талуудтай байдаг. Жишээлбэл, эдгээр ангиудыг ашигладаг кодууд нь статик байдаг тул тэдгээрийг шалгахад хэцүү байдаг. Тэд кодыг маш сайн холбодог, учир нь... зөрчих. Маш олон удаа нэг Туслагч бусад Туслагчийг дууддаг. Үүний үр дүнд хамаарлын график нь холболтын сүлжээтэй төстэй.

Үүнээс гадна, энэ шийдэл нь дараагийнх нь бүх сул талуудтай.

Шийдэл №2

Нийтийн интерфейс IAccountService ( хүчингүй болгох Activate(Account account); void AddOrder(Account account, Order order); int CalculateOrdersSum(Account account); ) public class AccountService: IAccountService ( public void Activate(Account account) ( account.ActivationDate = DateTime.Now account.IsApproved = true ) public void AddOrder(Account account, Order order) ( account.Orders.Add(order); order.Account = account; ) public int CalculateOrdersSum(Account account) ( буцах данс.Orders.Where( захиалга => захиалга.Бүрэн гүйцээсэн == худал) .Нийт (захиалга => захиалга. Үнэ) )

Бид холболт болон туршилтыг олж мэдсэн. Аль хэдийн нэг алхам урагшиллаа. Гэхдээ би дахиад хоёр асуудал харж байна.

AddOrder, CalculateOrdersSum гэх мэт маш олон функцууд байх болно. Хагас жилийн турш хөгжүүлсний дараа IAccountService интерфейс нь 40-50 функц болж өсөх болно. Хоёрдахь асуудал гараагүй бол интерфейсийн "бохирдол"-ыг даван туулах боломжтой байсан.

Та үйлчилгээг алгасаж кодын аль ч хэсэгт хэрэглэгчийн "өөрийн идэвхжүүлэлт" гэж бичиж болно. Жишээлбэл, өгөгдлийн сангаас Account объектыг авч, түүний IsApproved талбарыг үнэн гэж тохируулж, ActivationDate талбарыг шинэчлэхээ мартаарай. Захиалга нэмэх хувилбарт мөн адил хамаарна. Та хаана ч байсан "Захиалга" өмч дээрх Нэмэх функцийг дуудаж, нэмсэн захиалгын дансны талбарыг тохируулахаа мартаж болно. Энэ нь системийг тогтворгүй болгодог. Програмын API нь системийн хэрэглэгчдийн эсрэг хамгаалалтгүй байдаг. Энэ аргын тусламжтайгаар програмист IAccountService-ээс өөрт хэрэгтэй функцийг олж, өөрийн арга барилыг зохион бүтээхгүй байх болно гэж найдаж байна.

Шийдэл №3

Эдгээр бүх функцийг Бүртгэлийн домайн объект руу оруулъя. Объект талбаруудын хандалтын хувиргагчид хэрхэн өөрчлөгдсөнийг анхаарна уу:

Нийтийн ангийн бүртгэл (зөвхөн унших хувийн жагсаалт захиалга; нийтийн данс () ( захиалга = шинэ жагсаалт ();

Одоо манай програмын домэйн нь хэрэглэгчдэд туслах эсвэл үйлчилгээ шаарддаггүй бэлэн API өгдөг. Үүнээс гадна бид зөвхөн IsApproved тохиргоог хийснээр хэрэглэгчийг дахин идэвхжүүлэх боломжгүй болно функц нь шаардлагатай талбаруудыг өөрөө бөглөнө.

Дүгнэлт

Тиймээс, хэрэв функц нь домэйн дотор байрлах өгөгдөл, объектууд дээр ажилладаг бол энэ функцийг домэйн дотор үлдээх ёстой. Кодын найдвартай байдлаас гадна та өөрийн аппликешнд зориулж домэйны тусгай хэлийг бий болгоно.

Мартин Фаулер "Enterprise Application Patterns" хэмээх сонгодог бүтээлдээ ( Байгууллагын хэрэглээний архитектурын загварууд) бизнесийн логикийг зохион байгуулах хэд хэдэн аргыг тодорхойлсон.

  1. Гүйлгээний хувилбар- Бизнесийн логикийг процедурт хуваадаг бөгөөд тус бүр нь танилцуулгын давхаргаас ирж буй тодорхой хүсэлттэй нийцдэг.
  2. Хүснэгтийн модуль- өмнөх хувилбарын нэгэн адил бизнесийн логикийг процедурын хэв маягаар тайлбарласан боловч хүснэгт бүртэй хийсэн заль мэхийг тусдаа ангид байрлуулсан бөгөөд энэ нь кодыг илүү бүтэцтэй болгодог.
  3. Домэйн загвар- хэрэгжүүлэхэд хамгийн хэцүү арга боловч нарийн төвөгтэй логикийг тайлбарлахдаа хэд хэдэн давуу талтай байдаг. Үүний мөн чанар нь тухайн субьектийн объектод тохирох объектуудыг хуваарилах явдал юм. Эдгээр объектуудын хоорондын харилцааг бодит ертөнц дэх объектуудын хоорондын харилцаанд нийцүүлэн дүрсэлсэн болно. Үүний зэрэгцээ хадгалах, аюулгүй байдал, гүйлгээний менежмент зэрэг технологийн асуудлуудын шийдлийг ихэвчлэн бизнесийн логик давхаргаас гадуур авдаг.

    Энэ аргын хоёр сонголт байна:

    • Баян домайн загвар- өгөгдөл болон зан төлөвийг домэйн объект дотор багтаасан болно.
    • Цус багатай домайн загвар- зөвхөн өгөгдлийг домэйн объектуудад багтаасан байхад зан төлөвийг домэйн давхаргын дээд талд байрлах үйлчилгээний давхарга руу шилжүүлдэг.
Хэрэв ямар загвар - гүйлгээний скрипт, хүснэгтийн модуль эсвэл домэйн загварыг ашиглахыг сонгох нь дүрмээр бол асуудал үүсгэхгүй, учир нь тэдгээрийг хэрэглэх шалгуурыг тодорхой тайлбарласан бол цус багадалттай домэйн загварыг ашиглах уу, үгүй ​​юу гэсэн асуултын хариулт тийм ч тодорхой биш байна. Нэг талаас, объект хандалтат хандлагын онолчид энэ загварыг "эсрэг загвар" гэж үздэг, нөгөө талаас энэ нь корпорацийн програмуудыг хөгжүүлэх практикт тодорхой хэмжээгээр алдартай болсон нь зарим давуу талууд байгааг харуулж байна. Энэ асуудлыг ойлгохыг хичээцгээе.

Домэйн загварын загвар

Нэг эсвэл өөр хувилбарын давуу болон сул талуудыг хэлэлцэхээс өмнө загварыг бүхэлд нь авч үзэх шаардлагатай. Дээр дурдсанчлан энэ загварын мөн чанар нь холбогдсон объектуудын сүлжээг бий болгож, тэдгээр нь тус бүр нь бодит ертөнцөд нэг объектын загвар юм. Үүний зэрэгцээ энэ шийдэл нь нарийн төвөгтэй логикийн хэрэгжилтийг хялбаршуулдаг хэд хэдэн давуу талтай: инкапсуляция, удамшил, полиморфизм гэх мэт OOP парадигмын бүх зарчмуудыг програмист ашиглах боломжтой. Үүний зэрэгцээ ангиудын бүтэц нь бодит ертөнцийн бүтцийг тусгадаг бөгөөд энэ нь "программист-аналитик" шугамын дагуух харилцан үйлчлэлийг хялбаршуулдаг. Багийн хүмүүс нэг хэлээр харилцах боломжтой. Загварыг хэрэгжүүлэхийн тулд та танил загварын хэв маягийг ашиглаж болно. Энэхүү загвар нь бизнесийн логик давхаргад ил тод байдаг мэдээллийн сантай харилцан үйлчлэлийг хэрэгжүүлэх боломжийг олгодог - субьект талбарыг загварчлах объектууд нь жишээлбэл, мэдээллийн санд хадгалагдаж байгаа талаар юу ч мэдэхгүй.

Домэйн загвар нь програмын бизнесийн логикийг дахин ашиглах боломжийг олгодог нь чухал давуу тал юм. Гүйлгээний скрипт ба Хүснэгтийн модулийн загвараас ялгаатай нь бизнесийн логик нь танилцуулгын давхаргын хүсэлттэй холбогддоггүй. Үүний дагуу, жишээ нь танилцуулгын давхаргын бусад сонголтыг түүний дээр байрлуулж болно тайвширсанэсвэл САВАН-үйлчилгээ.

Харамсалтай нь ямар ч нэр төр өөрийн гэсэн үнэтэй байдаг. Энэ тохиолдолд төлбөр нь дараах байдалтай байна. Нэгдүгээрт, домэйн загварыг зохион бүтээх, хэрэгжүүлэх, хадгалах хөгжүүлэгчдийн ур чадварт тавигдах шаардлага нэмэгдэж байна: бусад шийдлүүдийг ашиглахаас илүү төвөгтэй хийсвэрлэлийг бий болгох чадвартай байх шаардлагатай. Хоёрдугаарт, ашигласан технологид тавигдах шаардлага нэмэгдэж байна. Ялангуяа та объектын хамаарлын зураглалыг хэрэгжүүлэх хангалттай хүчирхэг өгөгдөлд нэвтрэх давхаргатай байх хэрэгтэй. Домэйн Загварын загварыг хэрэгжүүлэх нь ихэвчлэн хүчирхэг ашиглахыг шаарддаг ORM-хүрээ гэх мэт Ичих, TopLink, EclipseLinkэсвэл OpenJPA, энэ нь нэг талаас илүү өндөр мэргэшсэн хөгжүүлэгчдийг шаарддаг бөгөөд нөгөө талаас боловсруулж буй системийн гүйцэтгэлийг бууруулж, эмзэг байдлыг нэмэгдүүлдэг: аливаа хайхрамжгүй үйлдэл, жишээлбэл, объектын тайлбарын нэг мөрийг өөрчлөх. хамаарлын зураглал үүсгэж болно.

Ханасан ба цус багадалттай загваруудын анатоми

Домэйн загварыг бий болгох хоёр аргын анатомийн ялгаа нь юу вэ: ханасан ба цус багадалт? Баян хандлагаар, бизнесийн логик, i.e. системийн үйлдлийг домэйн объектуудын хүрээнд хэрэгжүүлдэг. Энэ хандлага нь зан үйлийн нэг хэсгийг туслах ангиуд руу шилжүүлэхийг үгүйсгэхгүй *Үйлчилгээ, * Менежер, * Туслагч, гэхдээ энэ нь логик нь хэд хэдэн домэйн объектод нөлөөлж, аль нь хамааралтай болох нь тодорхойгүй үед л зөвтгөгддөг. Жишээ нь Telecom домэйны загварын дараах жижиг хэсэг юм. Хэрэглэгч үйлчилгээг идэвхжүүлэх шаардлагатай. Энэ үйлчилгээг захиалгын нэг хэсэг болгон нэмсэн. Энэ тохиолдолд өгөгдсөн параметрийн дагуу үйлчилгээ үзүүлж чадах үйлчилгээ үзүүлэгч байгууллага байгаа эсэхийг шалгах шаардлагатай. Баялаг домэйн загварын хувьд үйлчилгээ нэмэх логикийг аргад багтаасан болно addNewService(Үйлчилгээний үйлчилгээ)анги Үйлчилгээний захиалга:

хувийн Жагсаалт < Service>үйлчилгээ;

private void addService(Үйлчилгээний үйлчилгээ) (

хэрэв (үйлчилгээ == null)

Үйлчилгээ = шинэ ArrayList< Service> () ;

Services.add(үйлчилгээ);

public void addNewService(Үйлчилгээний үйлчилгээ) NotFoundValidProviderException (

ServiceProviderRepository providerRepo = ...;

хэрэв (providerRepo.hasAvailableProvider(service.getProp1(), service.getProp2(), ...)) (

Нэмэх үйлчилгээ (үйлчилгээ);

өөр(

шинэ NotFoundValidProviderException(үйлчилгээ) шидэх;


Цус багадалттай домайн загвар нь өөрөөр ажилладаг. Домэйн объектын ангилалд зан төлөв байхгүй. Тэд зөвхөн бүтээгчид болон өгөгдөлд хандах аргуудтай байдаг. Тэдний хэрэгжүүлдэг цорын ганц зүйл бол бусад объектуудтай харилцах харилцаа юм. Системийн бүх үйлдлийг домэйн загварын давхаргын дээд талд хэрэгжүүлсэн үйлчилгээний давхарга руу шилжүүлдэг. Энэ аргыг ижил жишээн дээр үзүүлье, гэхдээ одоо анги Үйлчилгээний захиалгазөвхөн өгөгдөлд хандах аргуудтай байх болно. Тохиромжтой үйлчилгээ үзүүлэгч байгаа эсэхийг тодорхойлж, захиалгад нэмэх ажлыг хийнэ ServiceOrderManager(үүнтэй санал нийлж байна ServiceOrderServiceжаахан хачин сонсогдож байна):

нийтийн ангиллын үйлчилгээний захиалга(

хувийн Жагсаалт < Service>үйлчилгээ;

олон нийтийн Жагсаалт < Service>getServices() (

буцаах үйлчилгээ;

public void setServices( Жагсаалт < Service>үйлчилгээ) (

энэ .үйлчилгээ = үйлчилгээ;


буцаах үйлчилгээ үзүүлэгчRepo;

хэрэв (order.getServices() == null)

Order.setServices(шинэ ArrayList< Services> () ) ;

Order.getServices().add(үйлчилгээ);

өөр(

Цус багадалттай домэйн загварын шүүмжлэл

Хөгжлийн нийгэмлэгт Цус багадалттай домэйн загварыг ашиглахаас татгалзах хоёр үндсэн зүйл байдаг:
  • Цус багатай домэйн загварыг ашигласнаар бид OOP зарчмаас гажсан. Энэ шүүмжлэлийн мөн чанар нь түүнээс хойш Цус багадалттай домэйн загварын хувьд домэйн объектууд нь зан төлөвгүй байдаг тул бид OOP-ийн үндсэн санаатай зөрчилддөг - тэдгээрийг нэг дор боловсруулах өгөгдөл, аргуудтай байх.
  • Домэйн загвар нь цус багадалт болж доройтох үед энэ загварын өгдөг бүх давуу талууд алдагдаж, сул талууд нь хэвээр үлдэнэ. Ялангуяа энэ хэв маягийг ашиглахын тулд жишээлбэл, нүсэр технологи ашиглан хэрэгжүүлсэн нэлээд хүчирхэг өгөгдөлд нэвтрэх давхарга шаардлагатай хэвээр байна. ORM- хүрээ.
Эдгээр санааг илүү нарийвчлан авч үзье. Цус багатай домэйн загвар нь OOP зарчимтай зөрчилддөг. Нэг ёсондоо энэ бодол үнэн, учир нь Домэйн объектуудад зан төлөв байхгүй. Гэсэн хэдий ч объектын дотоод төлөвт хандах хандалтыг тухайн объектын аргуудын ард багтааж болно. Захиалгат үйлчилгээ нэмэх жишээг ашиглан энэ санаагаа харуулъя: ангид Үйлчилгээний захиалгааргыг нэмсэн addService(), арга байхад setServices()үүнийг хувийн болгох:

нийтийн ангиллын үйлчилгээний захиалга(

хувийн Жагсаалт < Service>үйлчилгээ;

олон нийтийн Жагсаалт < Service>getServices() (

буцаах үйлчилгээ;

private void setServices( Жагсаалт < Service>үйлчилгээ) (

энэ .үйлчилгээ = үйлчилгээ;

public void addService(Үйлчилгээний үйлчилгээ) (

хэрэв (үйлчилгээ == null)

Үйлчилгээ = шинэ ArrayList< Service> () ;

Services.add(үйлчилгээ);


Анги ServiceOrderManagerImplзахиалга нэмэх боломжийг шалгаж, аргыг дуудах болно addService()анги Үйлчилгээний захиалга:

нийтийн ангийн ServiceOrderManagerImpl нь ServiceOrderManager (

private ServiceProviderRepository providerRepo;

public ServiceProviderRepository getProviderRepo() (

буцаах үйлчилгээ үзүүлэгчRepo;

public void setProviderRepo(ServiceProviderRepository providerRepo) (

энэ .providerRepo = providerRepo;

public void addNewService(ServiceOrder захиалга, Үйлчилгээний үйлчилгээ) ProviderNotFoundException (

хэрэв (providerRepo.hasAvailableProvider(service.getParam1(), service.getParam2(), ...)) (

Order.addService(үйлчилгээ);

өөр(

шинэ ProviderNotFoundException (үйлчилгээ) шидэх;


Асуудал нь бусад ангиудад зан авирыг илчлэхийн тулд ийм аргыг олон нийтэд нээлттэй байлгахыг шаарддаг. Энэ нь капсулыг ихээхэн доройтуулдаг. Аливаа хайхрамжгүй хөгжүүлэгчид холбогдох үйлчилгээний аргуудыг алгасаж, жишээлбэл, үйлчилгээ үзүүлэгчийн бэлэн байдлыг шалгахгүйгээр захиалгад үйлчилгээ нэмэх замаар объектын өмчид хандах боломжтой болно.

Шийдэл нь бүх бизнесийн логикийг багтаах, жишээ нь загвар ашиглах явдал байж болно POJO-фасад. Энэ тохиолдолд бизнесийн логик давхаргаас гадуур шилжүүлсэн объектуудын хувиршгүй байдлыг хангах, эсвэл ядаж тэдгээрийг өгөгдөл хадгалах давхаргаас салгах шаардлагатай бөгөөд энэ нь бизнесийн логик давхаргыг давж гарах ийм объектын өөрчлөлтийг хадгалахыг зөвшөөрөхгүй.

Өв залгамжлал, полиморфизм гэх мэт бусад OOP зарчмууд нь цус багадалттай домэйн загварыг ашиглах боломжтой хэвээр байна. Хамгийн орчин үеийн ORM-frameworks нь ангийн шатлалыг мэдээллийн санд буулгах боломжийг олгодог. Жишээлбэл, санхүүгийн хэрэглээний загварыг бий болгохдоо та овердрафтын хязгаарыг тооцоолох өөр өөр стратегиудыг анхаарч үзэх хэрэгтэй. Овердрафтгүй, хязгаарлагдмал хязгаартай овердрафт гэсэн хоёр стратеги байна гэж бодъё. Дараах ангийн шатлалыг байгуулъя.




Энэ тохиолдолд ангийн объект Данс- данс - энэ дансанд хамаарах овердрафтын тооцооны стратегийн тодорхой хэрэгжилтийн холбоостой байна:

нийтийн ангийн данс (

private OverdraftLimitStrategy overdraftLimitStrategy;

нийтийн OverdraftLimitStrategy getOverdraftLimitStrategy() (

overdraftLimitStrategy буцаах;


Заримд нь Бүртгэлийн үйлчилгээБид одоо овердрафтын тооцооны стратегийн полиморф хэрэгжилтийг ашиглаж болно:

нийтийн ангиллын AccountService(

олон нийтийн буцаан татах (Дансны данс, Давхар дүн) (

хэрэв (account.getAmount() + account.getOverdraftLimitStrategy().getLimit() > = дүн) (

Account.setAmount(account.getAmount() - дүн);


Домэйн загварын хэв маягийн өгдөг бүх ашиг тус алга болно. Дээр дурьдсанчлан, цус багадалттай домэйн загварыг ашиглах үед системийг OOP загвараар загварчлах нь бидэнд бий болсон давуу талууд хэвээр байна. Эдгээр давуу талуудыг зөвхөн системийн архитектур, ялангуяа давхаргын хоорондох интерфейсийг чадварлаг хөгжүүлснээр олж авах боломжтой боловч энэ нь илүү энгийн загварт төлөхөд тохиромжтой үнэ юм. Объектуудын урт хугацааны санах ойд ил тод хадгалагдах чадвар нь бас алдагддаггүй. Өмнөхтэй адил объектыг репозитор дахь харгалзах тушаалаар хадгалсан ( Хадгалах газар) эсвэл ажлын талбай ( Ажлын нэгж), хэвээрээ л байна. Объектийн дотоод төлөвийн өөрчлөлтийг өгөгдлийн сантай синхрончлох нь энэ өөрчлөлтийг объектын анги доторх арга эсвэл үйлчилгээний аргаар яг хэрхэн хийхээс хамаардаггүй.

Anemic домэйн загварын загвар түгээмэл болсон шалтгаанууд

Одоо яагаад Anemic Domain Model загвар маш их алдартай вэ гэсэн асуултын хариултыг олохыг хичээцгээе. Миний бодлоор энэ загвар нь баялаг загвартай харьцуулахад орчин үеийн технологийг ашиглан хэрэгжүүлэхэд хялбар байдагт гол шалтгаан нь оршдог. Өнөө үед эх кодын бүтцийн хамгийн түгээмэл арга бол Dependency Injection загвар юм. Үүний зэрэгцээ, объектын хоёр эх үүсвэр нь програм дээр тодорхой харагдаж байна.
  • IoC- Dependency Injection загварыг хэрэгжүүлж, үйлчилгээний объектуудыг бий болгодог сав: хадгалах газар, үйлчилгээ, фасад;
  • ORM-домэйн объект үүсгэдэг хүрээ.
Rich Domain Model загварыг хэрэгжүүлэхэд эдгээр хоёр аргаар баригдсан объектуудыг нэг график болгон холбох асуудал гарч ирдэг. Хэрэв бид дээр дурдсан баялаг домэйны загварын жишээ рүү буцах юм бол ангийн объект байгааг харж болно Үйлчилгээний захиалгата интерфэйсийг хэрэгжүүлдэг ангийн объектыг ямар нэгэн байдлаар дамжуулах хэрэгтэй ServiceProviderRepository. Бүгд биш ORM-хүрээнүүд нь гуравдагч этгээдийн хамаарлыг объектыг барьж байгуулах явцад оруулах боломжийг олгодог IoC- сав. Бид хэд хэдэн сул талтай аргуудыг ашиглах ёстой.
  • Статик хувьсагч болон аргуудаар дамжуулан шахах. Хадгалах газар болон бусад IoC-объектуудыг синглтон хэлбэрээр дамжуулдаг. Энэ аргын сул талууд: объектыг солих нь илүү хэцүү байдаг, жишээлбэл, туршилтын явцад stub-ээр солих замаар. Энэ арга нь мөн далд хамаарлыг нэвтрүүлдэг.
  • Арга замаар хамаарлыг дамжуулах (заагчаар дамжуулан тарилга хийхтэй андуурч болохгүй). Хэрэв бид домэйн объектод бизнесийн логик агуулсан аргыг оруулбал түүнд шаардлагатай бүх объектыг энэ аргад шилжүүлэх ёстой: хадгалах газар, үйлдвэр, холболт гэх мэт. Энэ аргын сул тал: бизнесийн логик аргуудын гарын үсэг нь улам төвөгтэй болж, аргын логик улам бүр төвөгтэй болох тусам бүх хамаарал гарч ирдэг, энэ нь аргын гарын үсгийг өөрчлөхөд хүргэдэг; аль аль нь аргын дуудлагыг хаана ч ашигласан залруулж, ямар нэгэн байдлаар дуудлагын цэгүүдэд шинэ хамаарлыг дамжуулах хэрэгтэй.
  • Үйлчилгээний байршлын загварыг ашиглаж, энэ загварын хэрэгжилтийг ямар нэгэн байдлаар домайн объектын арга руу шилжүүлээрэй. Энэ аргын сул талууд нь Service Locator загварын бүх сул талууд юм.
  • Хараат байдлын оронд тэдний ажлын үр дүнг арга руу шилжүүлээрэй. Гэхдээ энэ арга нь домайн объектоос логикийг устгадаг бөгөөд үндсэндээ цус багадалттай загвар руу чиглэсэн эхний алхам юм.

Цус багадалттай домэйн загварын загварын ашиг тус

Одоо байгаа дэд бүтцийн ачаар алдартай болохоос гадна Anemic Domain Model загвар нь хэд хэдэн давуу талтай. Тэднийг илүү нарийвчлан авч үзье.
  1. Дизайн ба хөгжүүлэлтийн хялбар байдал. Ерөнхийдөө цус багадалттай домэйн загвар нь хөгжүүлэхэд бага хүчин чармайлт, ур чадвар шаарддаг. Домэйн объектууд нь үйлчилгээнд агуулагдах зан төлөвгүй байдаг тул аль домэйны объектыг энэ эсвэл өөр аргыг байрлуулах вэ гэсэн асуултыг арилгадаг. Мэдээжийн хэрэг, үүний оронд аль үйлчилгээнд байрлуулах, шинэ үйлчилгээ бий болгох эсэх зэрэг асуултууд гарч ирдэг ч эдгээр асуултуудыг шийдвэрлэхэд хялбар байдаг.
  2. Өгөгдлийн агуулах дээр суурилсан хялбар үүсгэх: мэдээллийн сан, WSDL-үйлчилгээний тайлбар, объект-харьцааны зураглалын тохиргооны файл гэх мэт. Энэ давуу тал нь бид OOP хэл дээр хэрэгжээгүй эсвэл алсын процедурын дуудлагын хэв маягаар интерфэйсийг ил гаргадаг хуучин системийн интерфейсийг бүтээх үед тод илэрдэг. Орчин үеийн мэдээллийн системүүд үйлчилгээнд чиглэсэн архитектурыг ашиглахад чиглэгдэж байгаа тул энэ хандлагын онцлог нь улам бүр чухал үүрэг гүйцэтгэж байна. Энэ нь дашрамд хэлэхэд, бараг 10 жил өнгөрсний дараа Фаулерын шүүмжлэлтэй нийтлэл бичсэн үеэс өнөөгийн нөхцөл байдлыг ялгаж байна. Одоо байгаа аж ахуйн нэгжийн үйлчилгээний үйлчлүүлэгч хөгжүүлэгчийн хувьд би үйлчилгээний гэрээний дагуу өгөгдлийн загвар үүсгэх нь илүү хялбар байдаг (жишээлбэл, WSDL-тодорхойлолт) ба баялаг домайн загвар бүтээж, алсын үйлчилгээтэй нэгтгэхээс илүүтэйгээр энэ загвар дээр менежерийн ангиудын давхаргыг хөгжүүлээрэй.
  3. Дахин ашиглахад хялбар. Хэрэв бидэнд Anemic Domain Model загвар дээр бүтээгдсэн програм байгаа бөгөөд бид ижил өгөгдөлтэй ажилладаг боловч өөр бизнесийн логикийг хэрэгжүүлдэг программыг хэрэгжүүлэх шаардлагатай бол бид одоо байгаа загварын ангиллыг дахин ашиглах боломжтой. Ханасан домэйн загварын хувьд ийм дахин ашиглах нь хэцүү байх болно, учир нь бизнесийн логик нь домэйн загварыг хэрэгжүүлдэг ангиудтай нягт уялдаатай байдаг. Энэ үүднээс авч үзвэл хэт их капсулжуулалт нь ашигтай гэхээсээ илүү хор хөнөөлтэй байдаг.

Дүгнэлт

Эцэст нь хэлэхэд хэлэлцүүлэг явуулахдаа ч, шийдвэр гаргахдаа ч хамгийн сүүлд тодорхой эрх мэдэлтнүүдийн санал бодлыг сохроор дагадаг гэдгийг хэлэх нь зүйтэй байх. Шинжлэх ухаанд үзэл бодлын олон ургальч үзэл байдаг гэдгийг үргэлж санах нь зүйтэй. Тодорхой хандлагыг баримталдаг шинжлэх ухааны өөр өөр сургуулиуд байдаг. Ийм сургуулиудын хооронд өрсөлдөөн гарах нь зүйн хэрэг. Энэ эсвэл тэр "гуру" -ын аливаа үг нь оппортунист бүрэлдэхүүнээс үүдэлтэй байж болно. Дараа нь урам хугарахгүйн тулд өөртөө шүтээн бүтээх шаардлагагүй. Та үргэлж өөрийнхөөрөө бодож, өөрийн туршлага, юуны түрүүнд төслийнхөө тэргүүлэх чиглэлд үндэслэн шийдлийг сонгох хэрэгтэй.

Сүүлийн шинэчлэлт: 2016/07/19

MVC загварын гол бүрэлдэхүүн хэсгүүдийн нэг нь загварууд юм. Загварын гол үүрэг бол ашигласан өгөгдлийн бүтэц, логикийг тайлбарлах явдал юм.

Дүрмээр бол, програмд ​​​​ашиглагдсан бүх аж ахуйн нэгжүүдийг тус тусад нь загвар болгон хуваасан бөгөөд тэдгээр нь аж ахуйн нэгж бүрийн бүтцийг тодорхойлдог. Даалгавар, сэдвийн хэсгээс хамааран бид програмын өөр тооны загварыг сонгож болно.

Бүх загварууд нь энгийн POCO анги (энгийн хуучин CRL объектууд), өөрөөр хэлбэл C# хэл дээрх энгийн ангиуд хэлбэрээр бүтээгдсэн. Жишээлбэл, хэрэв бид гар утасны онлайн дэлгүүрийн програмтай ажиллаж байгаа бол утсыг төлөөлөх төсөлд дараахь загварыг тодорхойлж болно.

Нийтийн анги Утас ( public int Id ( get; set; ) public string Name ( get; set; ) public string Company ( get; set; ) public int Price ( get; set; ) )

Утасны загвар нь хэд хэдэн шинж чанарыг тодорхойлдог: өвөрмөц танигч Id, нэр, үйлдвэрлэгч, үнэ. Энэ бол сонгодог цус багадалттай загвар. Цус багадалттай загвар нь зан төлөвгүй бөгөөд зөвхөн төлөв байдлыг шинж чанар болгон хадгалдаг.

Гэхдээ загвар нь зөвхөн шинж чанараас бүрдэх албагүй. Нэмж дурдахад, энэ нь бүтээгч, зарим аргууд, талбаруудтай байж болох ба ерөнхийдөө C# хэлний стандарт классыг төлөөлдөг. Цус багатай загвараас ялгаатай нь зан төлөвийг тодорхойлдог загваруудыг "зузаан" загвар гэж нэрлэдэг (Rich Domain Model / Fat Model / Thick Model). Жишээлбэл, бид цус багадалттай загвараас үүнийг дараах байдлаар өөрчилснөөр холдож болно.

Нийтийн ангилал Утас ( private аравтын _discount = 0; нийтийн утас(аравтын хөнгөлөлт) ( this._discount = discount; ) public int Id ( get; set; ) public string Name ( get; set; ) public string Company ( get; set; ) нийтийн аравтын үнэ ( авах; тохируулах; ) нийтийн аравтын GetPriceWithDiscount() ( үүнийг буцаана. Үнэ - (энэ. Үнэ * энэ._ хямдрал); ) )

Гэхдээ аж ахуйн нэгжийг дүрслэх ямар аргыг сонгохоос үл хамааран гол зүйл бол загварын ангиллыг хэт ачаалахгүй байх, түүний зорилго нь үндсэндээ өгөгдлийг дүрслэх явдал гэдгийг санах явдал юм. Мөн загвар нь нэг хариуцлагын зарчмыг баримтлан зөвхөн нэг аж ахуйн нэгжийг дүрслэх ёстой.

ASP.NET MVC Core програмд ​​загваруудыг хэрэглээний зэрэглэлээр хэд хэдэн бүлэгт хувааж болно.

    Объектууд нь тусгай мэдээллийн санд (жишээлбэл, мэдээллийн сан, xml файл гэх мэт) хадгалагддаг загварууд.

    Харагдах байдал руу өгөгдөл дамжуулах эсвэл харагдацаас өгөгдөл хүлээн авахад эсрэгээр ашигладаг загварууд. Ийм загваруудыг бас нэрлэдэг танилцуулгын загварууд

    Завсрын тооцооллын туслах загварууд

Дүрмээр бол загваруудыг хадгалахын тулд загварт тусдаа загвар хавтас үүсгэдэг. Харах загваруудыг ихэвчлэн ViewModels гэж нэрлэдэг тусдаа хавтсанд байрлуулдаг.

Анхдагчаар суурилагдсан нэвтрэлт танилттай ASP.NET MVC Core төсөл нь эдгээр фолдеруудыг аль хэдийн агуулж байгаа бөгөөд тэдгээр нь шаардлагатай бүх загваруудыг агуулдаг. Гэсэн хэдий ч, хэрэв бид суурилуулсан баталгаажуулалтгүйгээр төсөл үүсгэвэл эдгээр хавтас байхгүй болно. Үүний дагуу бид эдгээр фолдеруудыг гараар нэмэх хэрэгтэй. Гэхдээ бид загваруудыг яг Models болон ViewModels гэж хадгалах хавтсыг нэрлэх шаардлагагүй гэдгийг би дахин онцлон хэлье. Эдгээр нь дурын нэртэй лавлахууд байж болно, та төслийн үндэс дээр загваруудыг байрлуулж болно, гэхдээ илүү нийтлэг загвар нь Models болон ViewModels гэсэн нэр юм.

Жишээлбэл, Web Application төрлийн шинэ ASP.NET Core төслийг үүсгэж, түүнийг ModelsApp гэж нэрлэе. Эхлээд загваруудыг хадгалахын тулд төсөлд Models хавтас нэмж оруулъя.

Мөн бид үүнд Компанийн шинэ анги байрлуулах болно:

Public class Company ( public int Id ( get; set; ) public string Name ( get; set; ) public string Country ( get; set; ) )

Мөн Утасны ангиллыг Models хавтсанд нэмнэ үү

Нийтийн ангилал Утас ( public int Id ( get; set; ) public string Name ( get; set; ) public Company Manufacturer ( get; set; ) public аравтын тоо (ав; set; ) )

Эдгээр загварууд нь бидний ашиглах өгөгдлийг тайлбарлах болно. Энэ өгөгдлийг мэдээллийн санд хадгалах боломжтой боловч хялбар болгох үүднээс бид үүнийг хянагч дээр тодорхойлох болно. HomeController-ийг дараах байдлаар өөрчилье.

System.Collections.Generic ашиглах; System.Linq ашиглах; Microsoft.AspNetCore.Mvc ашиглах; ModelsApp.Models ашиглах; // загварын нэрийн орон зай ModelsApp.Controllers ( нийтийн анги HomeController: Controller ( Жагсаалт компаниуд; утас; public HomeController() ( Компани алим = шинэ Компани ( Id = 1, Нэр = "Apple", Улс = "АНУ" ); Компани microsoft = шинэ Компани ( Id = 2, Нэр = "Microsoft", Улс = "АНУ" ) Компани google = шинэ компани ( Id = 3, Нэр = "Google", Улс = "АНУ" ); (алим, microsoft, google);

утас = шинэ жагсаалт

( шинэ утас ( Id=1, Үйлдвэрлэгч= алим, Нэр="iPhone 6S", Үнэ=56000 ), шинэ утас ( Id=2, Үйлдвэрлэгч= алим, Нэр="iPhone 5S", Үнэ=41000 ), шинэ утас ( Id=3, Үйлдвэрлэгч= microsoft, Name="Lumia 550", Үнэ=9000 ), шинэ утас ( Id=4, Үйлдвэрлэгч= microsoft, Name="Lumia 950", Үнэ=40000), шинэ утас ( Id=5, Үйлдвэрлэгч= google, Name="Nexus 5X", Үнэ=30000 ), шинэ утас ( Id=6, Үйлдвэрлэгч= google, Name="Nexus 6P", Үнэ=50000 ) ); ) нийтийн IActionResult Index() (харах (утас); ) ) )Загварын объектын жагсаалтыг View() аргыг ашиглан харагдац руу шилжүүлнэ.

Эцэст нь бид үзэл бодлыг өөрчилдөг Index.cshtml

, энэ нь бүх объектыг гаргах болно: }
@ModelsApp.Models ашиглан @model IEnumerable@( ViewData["Гарчиг"] = "Нүүр хуудас"; )@foreach (Загвар дээрх утас p) (

@p.Нэр

@p.Үйлдвэрлэгч?.Нэр

@p.Үнэ

Анагаах ухаанд энэ эмнэлзүйн болон гематологийн синдромын хэд хэдэн төрөл байдаг бөгөөд энэ нь төрөлхийн болон олдмол байж болно. Сарын тэмдгийн үед их хэмжээний цус алддаг тул залуу эмэгтэйчүүд цусны улаан эсийн дутагдалд мэдрэмтгий байдаг нь шинжлэх ухаанаар батлагдсан. Ахмад настнуудад хоол тэжээлийн дутагдал, архаг өвчний улмаас цус багадалт үүсдэг. Тиймээс цус багадалт нь бие махбодид байгаа эмгэгийн хоёрдогч шинж тэмдэг болдог.

Жирэмсэн үед тохиолддог өвчний зарим хэлбэрийг хэвийн гэж үздэг боловч цус багадалт нь янз бүрийн насны өвчтөнүүдэд яагаад аюултай болохыг мэдэх хэрэгтэй. Удаан хугацааны гипоксийн үед дотоод бодисын солилцооны үйл явц эвдэрч, хортой бүтээгдэхүүн хуримтлагдаж, бөөр, элэг, зүрх, уушигны үйл ажиллагааны алдагдал үүсдэг. Өвчтөн удаан хугацааны туршид өвчний илрэлийг анзаардаггүй бөгөөд энэ нь аажмаар архаг хэлбэрт шилжих болно. Эцсийн эцэст амьсгал давчдах, гар, хөл хавагнах, зүрхний цохилт түргэсэх, гүйцэтгэл буурах зэрэг гомдол гарч ирдэг. Лабораторийн шинжилгээ хийлгэхийн өмнө эмч нар тодорхойгүй эмгэг жамын цус багадалт байгаа гэж үздэг.

Өвчний этиологи

Цус багадалт нь янз бүрийн хүчин зүйлийг тодорхойлох үндсэн дээр өвчтөнд оношлогддог. Цус багадалтын дараах үндсэн шалтгааныг мэддэг.

  1. Хүнд сарын тэмдгийн мөчлөгийн үед их хэмжээний цус алдах, гүн шарх, бүдүүн гэдэсний хорт хавдар, гэдэсний шархлаа.
  2. Ретикулоцит (цусны улаан эсийн прекурсорууд) үүсгэдэг ясны чөмөгт эритропоэтин дааврын үйлдвэрлэл буурдаг бөөрний үйл ажиллагааны алдагдал.
  3. Өвчин нь нэгдүгээр зэргийн хамаатан саднаас өвлөгдөж болно.
  4. Буруу хооллолт, витамин В12, С, фолийн хүчил, төмрийн дутагдал.
  5. Цус багадалт нь архаг эмгэгийн үед үүсдэг: Кроны өвчин, ДОХ, ХДХВ, ревматоид артрит, хорт хавдар.
  6. Гематопоэтик тогтолцооны гэмтлийн шинж тэмдгүүдийн илрэл нь психосоматиктай холбоотой байдаг. Цус багадалт нь хүн өөрийгөө хэт шүүмжилж, амьдралдаа сэтгэл хангалуун бус байдаг гэсэн бие махбодоос тодорхой дохио болдог. Энэ тохиолдолд сэтгэл судлаачид шинэ зам, бодол санаа нь аюул занал учруулахгүй бөгөөд бүрэн аюулгүй гэдгийг өөртөө давтан хэлэхийг зөвлөж байна.
  7. Зарим хүмүүсийн бие В12 витаминыг шингээх чадваргүй байдаг бөгөөд энэ нь цус багадалт үүсэхэд хүргэдэг. Шим тэжээлийн шингээлт буурах нь сүүн бүтээгдэхүүн, хатуу хоол хүнс, түүхий үр тариа зэргээс шалтгаалж болно.
  8. Өвчин байхгүй тохиолдолд цусны улаан эсүүд 100 хоног амьдардаг. Дэлүү гэмтсэн үед цус задрал үүсч, түүний үйл ажиллагааг алдагдуулдаг.
  9. Этанол нь тархины үйл ажиллагаанд хортой бөгөөд цусны улаан эсийн үйлдвэрлэлийг удаашруулдаг. Эдгээр хүчин зүйлүүд нийлбэл архаг архичид цус багадалт үүсэх эрсдэл эрс нэмэгддэг.
  10. Төмрийн дотоод нөөц шавхагдах нь ихэвчлэн илүүдэл жинтэй тэмцэж, хатуу хоолны дэглэм баримталдаг эмэгтэйчүүдэд өдөөгддөг.
  11. Цус багадалт нь ихэвчлэн мэс заслын өмнөх үе шатанд илэрдэг. Тиймээс мэс засалч нь мэс засал хийх эрсдлийг бүрэн үнэлж, зүрх судасны тогтолцооны ачааллыг бууруулахын тулд гемоглобины түвшинг хэвийн хэмжээнд хүртэл нэмэгдүүлэх ёстой.


Танд нийтлэл таалагдсан уу? Найзуудтайгаа хуваалцаарай!