Дизайн загвар нь програм хангамжийн дизайн дахь давтагдах асуудлуудыг шийдвэрлэх доод түвшний тодорхой шийдэл юм.
Дизайн загвар нь олон төсөлд хэрэглэгдэх дахин ашиглах боломжтой шийдэл юм.
Тооцоолсон унших хугацаа: 5 минути
Дизайн загвар ба SOLID зарчмуудын гол ялгаа
- Дизайн загвар:
- Тодорхой шийдэл: Дизайн загварууд нь програм хангамжийн дизайн дахь давтагдах асуудлуудыг шийдвэрлэх тодорхой, доод түвшний шийдэл юм.
- Хэрэгжилтийн талаарх дэлгэрэнгүй мэдээлэл: Объект хандалтат програмчлалын нийтлэг бэрхшээлийг шийдвэрлэхэд хэрэгжүүлэх тодорхой удирдамжаар хангана.
- Жишээ нь: Зарим алдартай загварт Singleton, Factory Method, and Adapter загварууд багтдаг.
- Аюулгүй байдал: Загварын хэв маягийг туршиж, олон нийт хүлээн зөвшөөрч, дагаж мөрдөхөд аюулгүй болгодог.
- SOLID зарчим:
- Ерөнхий удирдамж: SOLID зарчмууд нь сайн програм хангамжийн дизайныг илтгэдэг өндөр түвшний удирдамж юм.
- Өргөтгөх боломжтой архитектур: Тэд өргөтгөх чадвар, засвар үйлчилгээ, уншигдах чадварт анхаарлаа хандуулдаг.
- Хэлтэй холбоогүй: SOLID зарчмууд нь ямар нэгэн тодорхой програмчлалын хэлтэй холбогддоггүй.
- Эх сурвалж:
- Ганц хариуцлагын зарчим (SRP): Ангид өөрчлөлт хийх ганцхан шалтгаан байх ёстой.
- Нээлттэй/хаалтын зарчим (OCP): Програм хангамжийн байгууллагууд өргөтгөл хийх боломжтой боловч өөрчлөхөд хаалттай байх ёстой.
- Лисковын орлуулах зарчим (LSP): Дэд төрлүүдийг үндсэн төрлөөр нь сольж болох ёстой.
- Интерфэйсийг тусгаарлах зарчим (ISP): Үйлчлүүлэгчид ашигладаггүй интерфейсээс хамааралтай байхыг албадах ёсгүй.
- Dependency Inversion Principle (DIP): Дээд түвшний модулиуд нь доод түвшний модулиудаас хамаарах ёсгүй; аль аль нь хийсвэрлэлээс хамаарах ёстой.
Дүгнэж хэлэхэд дизайны загварууд нь тодорхой шийдлүүдийг санал болгодог бол SOLID зарчим нь програм хангамжийг илүү сайн загварчлах ерөнхий удирдамжийг өгдөг
Дизайн хэв маягийг ашиглахын давуу тал
- Дахин ашиглах боломжтой: Дизайн загвар нь олон төсөлд хэрэглэгдэх дахин ашиглах боломжтой шийдэл юм. Тогтсон хэв маягийг ашигласнаар хөгжүүлэгчид нийтлэг асуудалд дугуйг дахин зохион бүтээх шаардлагагүй тул цаг хугацаа, хүчин чармайлтаа хэмнэдэг.
- Defiархитектурын ойлголт: Загварын хэв маяг нь тусалдаг defiпрограм хангамжийн системийн архитектурыг боловсронгуй болгох. Эдгээр нь дизайны тодорхой сорилтуудыг шийдвэрлэх, тууштай байдал, тогтвортой байдлыг хангах бүтэцтэй арга барилыг бий болгодог.
- Flessibilità: Загварууд нь өөрчлөгдөж буй хэрэгцээнд дасан зохицох уян хатан байдлыг олгодог. Шинэ боломжууд эсвэл өөрчлөлтүүд шаардлагатай үед хөгжүүлэгчид бүхэл бүтэн системийг эвдэхгүйгээр одоо байгаа загваруудыг өөрчлөх эсвэл өргөтгөх боломжтой.
Дизайн хэв маягийг ашиглах сул талууд
- Сурах муруй: Загварын хэв маягийг ойлгож, хэрэгжүүлэхэд мэдлэг, туршлага шаардлагатай. Шинэхэн хөгжүүлэгчид тухайн асуудлын талаархи ойлголтыг ойлгох, зөв загварыг сонгоход хэцүү байж магадгүй юм.
- Хэт их хэрэглээ: Загварын бэлэн загвартай байх нь одоо байгаа хэв маягийг ашиглан бүх асуудлыг шийдэж болно гэсэн буруу ойлголтыг бий болгодог. Загваруудыг хэтрүүлэн ашиглах нь бүтээлч байдлыг хязгаарлаж, илүү сайн, шинэлэг шийдлүүдийг эрэлхийлэхэд саад болно.
- Нарийн төвөгтэй байдал- Зарим дизайны загвар нь кодын суурьт нэмэлт төвөгтэй байдлыг бий болгодог. Хөгжүүлэгчид загваруудыг үр дүнтэй ашиглах, кодыг ойлгомжтой болгох хоёрын тэнцвэрийг олох ёстой.
Дүгнэж хэлэхэд, дизайны хэв маяг нь дахин ашиглах боломжтой, архитектур, уян хатан байдлын хувьд ихээхэн давуу талтай боловч шаардлагагүй төвөгтэй байдлаас зайлсхийх, бүтээлч байдлыг дэмжихийн тулд тэдгээрийг ухаалаг ашиглах хэрэгтэй.
Ларавел дахь дизайны загварын жишээ: Singleton
Singleton загварын загвар нь анги нь зөвхөн нэг инстанцтай байх ба нэг нэвтрэх цэгээр хангадаг. Laravel-д энэ загварыг ихэвчлэн мэдээллийн сангийн холболт эсвэл тохиргооны тохиргоо зэрэг нөөцийг удирдахад ашигладаг.
PHP дээр Singleton загварыг хэрэгжүүлэх үндсэн жишээ энд байна:
<?php
анги Singleton {
хувийн статик $ instance = null;
хувийн функц __construct() {
// Шууд үүсгэхээс сэргийлэхийн тулд хувийн бүтээгч
}
нийтийн статик функц getInstance(): self {
хэрэв (null === self::$ instance) {
self::$ instance = new self();
}
self::$ instance буцаах;
}
// Бусад аргууд болон шинж чанаруудыг энд нэмж болно
}
// Хэрэглээ:
$singletonInstance = Singleton::getInstance();
// Одоо танд Singleton ангийн ганц жишээ байна
// Ларавел дахь жишээ ашиглалт:
$өгөгдлийн сан = DB::холболт('mysql');
// Өгөгдлийн сангийн холболтын жишээг татаж авах (singleton)
Жишээ кодонд:
- Singleton анги нь шууд үүсгэгдэхээс сэргийлэхийн тулд хувийн бүтээгчтэй;
- getInstance() арга нь тухайн ангийн зөвхөн нэг тохиолдол байгааг баталгаажуулдаг;
- Та шаардлагатай бол Singleton ангилалд бусад аргууд болон шинж чанаруудыг нэмж болно;
Laravel үйлчилгээний контейнер нь ангийн хамаарлыг удирдах, хамаарлын тарилга хийх Singleton загварыг ашигладаг. Хэрэв та Laravel-д ажилладаг бол түүний үйлчилгээний савыг ашиглаж, илүү дэвшилтэт хэрэглээний тохиолдлуудад ангиа үйлчилгээ үзүүлэгчд бүртгүүлээрэй.
Ercole Palmeri
11 оны дөрөвдүгээр сарын 2024-ны 4:24 цаг