Python'догу долбоорлоо паттерндери
Классикалык паттерндер питоникалык жол менен кайра жазылган: модулдер, биринчи класстагы функциялар жана протоколдор
- эмне үчүн Python модулу буга чейин синглтон экенин түшүндүрө аласыз;
- фабрика класстарынын иерархиясын чакырылуучу объекттердин реестр-сөздүгү менен алмаштыра аласыз;
- функцияны жөн эле берип, Стратегия паттернин ишке ашыра аласыз;
- жазылуучу функциялардын тизмесинин негизинде Байкоочуну кура аласыз;
- ABC ордуна структуралык типтештирүү үчүн
typing.Protocolколдоно аласыз.
1. Паттерн деген эмне - жана Python'дун өзгөчөлүгү
Паттерн - бул китепкана да, тилдин мүмкүнчүлүгү да эмес; бул кайра-кайра пайда болгон чечимдин формасы. Бул формаларды атоо командага жалпы сөздүк берет: "бул жерде Стратегияны колдоноли" деп айтуу эки сөз менен бүтүндөй ой-ниетти жеткирет.
Кыйынчылык - көптөгөн окуу паттерндери класстар гана бар статикалык тилдердин чектөөлөрүн айланып өтүү үчүн бар. Мындай тилдерде функцияны берүүгө болбойт, ошондуктан аны бир методу бар объектке ороп коюшат. Python функцияларды берүүнү, аларды сөздүктө сактоону жана аткаруу учурунда жүрүм-турумду алмаштырууну билет, ошондуктан объект-ороо көбүнчө ашыкча расмийлик болуп калат. Кесипкөй адат - ой-ниетти билдирген эң жөнөкөй куралды алуу жана класстарды алар акталганда гана кошуу.
| Паттерн | Классикалык ООП формасы | Питоникалык формасы |
|---|---|---|
| Синглтон | өз конструкторун жашырган класс | модуль (процесске бир гана) |
| Фабрика | жаратуучу класстардын иерархиясы | чакырылуучу объекттердин реестр-сөздүгү |
| Стратегия | стратегия интерфейси + конкреттүү класстар | биринчи класстагы функцияны берүү |
| Байкоочу | субъект жана байкоочу интерфейстери | жазылуучу функциялардын тизмеси |