1.1 Pambuka kanggo pola

Kaya sing wis kasebut sadurunge, programer miwiti nggarap program kanthi ngrancang modele: nyusun dhaptar entitas sing bakal ditindakake program kasebut. Lan luwih akeh entitas ing program kasebut, luwih kompleks program kasebut.

Mulane, kanggo ngurangi kerumitan program, padha nyoba kanggo standarisasi interaksi obyek. Lan ing kene pola desain utawa pola desain mbantu programmer akeh . Saka Inggris Design Pattern .

Penting! Ing basa Rusia, tembung desain biasane tegese desain grafis, ing basa Inggris ora kaya ngono. Tembung Basa Inggris iki duwéni teges kang mèh padha utawa teges kang padha jibles karo «design» lan klebu bangsa paramasastra kang padha. Contone, desain mesin ora katon, nanging struktur internal.

Mula pola rancangan iku persis pola/pola rancangan. Aku nyaranake sampeyan mungkasi nggunakake desain tembung ing pangertèn saka "katon" kabeh. Sampeyan minangka Insinyur Perangkat Lunak ing mangsa ngarep, lan kanggo sampeyan desain persis desain.

Dadi apa pola desain iki? Kaping pisanan, pola desain minangka solusi standar kanggo masalah standar . Solusi sing apik, efektif lan diuji wektu.

Lha nek dikongkon ngrancang sepedha, bisa dadi roda loro, telu utawa lima. Dadi, ing esuke desain, iku. Nanging pendekatan wektu-dites loro wheel . Nanging pendekatan sing jelas saiki ngalami rasa lara lan kesalahan:

Biasane, cithakan dudu solusi lengkap sing bisa langsung diowahi dadi kode, mung minangka conto solusi sing apik kanggo masalah sing bisa digunakake ing macem-macem kahanan.

Pola berorientasi obyek nuduhake hubungan lan interaksi antarane kelas utawa obyek , tanpa nemtokake kelas pungkasan utawa obyek aplikasi sing bakal digunakake.

1.2 Sajarah pola desain

Mbalik ing taun 70-an, programer ngadhepi kabutuhan kanggo ngembangake program gedhe sing kudu digarap kabeh tim pangembangan. Macem-macem cara kanggo ngatur karya wis dicoba, nanging industri konstruksi paling dipengaruhi pembangunan.

Kanggo ngatur karya klompok akeh wong, praktik lan pendekatan saka industri konstruksi digunakake. Miturut cara, iku saka iku istilah kayata perakitan (mbangun), Software Developer (builder), lan konsep arsitektur teka menyang program.

Lan kaya sing bisa ditebak, ide pola desain uga dijupuk saka industri konstruksi. Konsep pola pisanan diterangake dening Christopher Alexander ing The Pattern Language. Kutha-kutha. bangunan. Konstruksi". Ing buku iki, basa khusus, pola, wis digunakake kanggo nggambarake proses desain kutha.

Pola ing construction diterangake pancasan wektu-dites khas: carane dhuwur windows kudu, carane akeh jubin kudu ing bangunan, carane akeh wilayah ing microdistrict kudu diparengake kanggo wit lan lawns.

Mula, ora nggumunake yen ing taun 1994 buku "Teknik Desain Berorientasi Objek. Pola Desain", sing kalebu 23 pola sing ngrampungake macem-macem masalah desain berorientasi obyek.

Buku iki ditulis dening 4 penulis: Erich Gamma, Richard Helm, Ralph Johnson lan John Vlissides. Judhul buku kasebut dawa banget kanggo dieling-eling dening sapa wae. Mulane, kabeh wong wiwit nelpon "buku dening geng papat", yaiku, "buku saka geng papat" , lan banjur malah "buku GoF".

Lan wiwit iku, pola desain liyane wis ditemokake. Pendekatan "pola" wis dadi populer ing kabeh bidang pemrograman, mula saiki sampeyan bisa nemokake kabeh pola ing njaba desain obyek.

Penting! Pola ora sawetara solusi super-asli, nanging, ing nalisir, asring ditemoni, solusi khas kanggo masalah sing padha. Solusi sing wis kabukten apik.

1.3 Dhaptar pola

Akeh programer ora sinau pola siji ing kabeh urip, sing, nanging, ora nyegah dheweke nggunakake. Kaya sing wis dakkandhakake sadurunge, pola minangka solusi sing diuji wektu sing apik, lan yen programer ora bodho, mula kanthi pengalaman dheweke nemokake solusi kasebut.

Nanging kenapa, liwat pirang-pirang pacoban lan kesalahan, entuk solusi sing paling optimal nalika ana wong sing wis mlaku kanthi cara iki lan wis nulis buku kanthi quintessence pengalaman lan kawicaksanan urip?

Sampeyan bisa palu kuku nganggo kunci, nanging kenapa? Sampeyan bisa malah nggunakake pengeboran yen nyoba hard. Nanging kepemilikan instrumen sing apik yaiku sing mbedakake profesional saka amatir. Lan profesional ngerti yen fitur utama pengeboran ora ana ing kabeh iki. Dadi, kenapa sampeyan kudu ngerti pola?

  • solusi buktiaken. Sampeyan nglampahi wektu kurang nggunakake solusi mati-the-rak tinimbang reinventing setir. Sawetara keputusan sing bisa sampeyan pikirake dhewe, nanging akeh sing bisa dadi panemuan kanggo sampeyan.
  • Standarisasi kode. Sampeyan nggawe kurang salah nalika ngrancang, nggunakake solusi terpadu sing khas, amarga kabeh masalah sing didhelikake wis suwe ditemokake.
  • Kamus Pemrograman Umum. Sampeyan ngomong jeneng pola tinimbang mbuwang jam kanggo nerangake programer liyane apa desain kelangan sampeyan teka munggah karo lan apa kelas sing dibutuhake kanggo iki.

Apa pola-pola kasebut?

Pola beda-beda ing tingkat kerumitan, rinci, lan jangkoan sistem sing dirancang. Nggambar analogi karo konstruksi, sampeyan bisa nambah safety persimpangan kanthi masang lampu lalu lintas, utawa sampeyan bisa ngganti persimpangan karo interchange mobil kabeh karo underpass.

Pola sing paling murah lan prasaja yaiku idiom. Iki ora universal, amarga mung ditrapake ing kerangka siji basa pamrograman.

Sing paling serbaguna yaiku pola arsitektur sing bisa ditindakake ing meh kabeh basa. Padha dibutuhake kanggo ngrancang kabeh program, lan ora unsur individu.

Nanging sing paling penting yaiku pola kasebut beda-beda kanthi tujuan. Pola sing bakal kita kenal bisa dipérang dadi telung klompok utama:

  • Pola penciptaan ngurusi nggawe obyek sing fleksibel tanpa ngenalake dependensi sing ora perlu menyang program kasebut.
  • Pola struktural nuduhake cara sing beda kanggo mbangun hubungan antarane obyek.
  • Pola prilaku ngurus komunikasi sing efisien antarane obyek.

1.4 Pambuka kanggo UML

Ayo diwiwiti kanthi ndeleng 23 pola sing padha sing diterangake ing buku Gang of Four. Loro-lorone pola kasebut lan jenenge minangka perkara sing akrab sanajan kanggo programmer anyar. Aku bakal ngenalake sampeyan, nanging aku nyaranake maca buku kasebut babagan pola.

Pola desain ora diikat karo basa pamrograman tartamtu, mula UML biasane digunakake kanggo njlèntrèhaké. Iku banget populer 20 taun kepungkur, nanging malah saiki kadhangkala digunakake. Lan kanthi cara kasebut, katrangan pola mung minangka papan panggunaan UML minangka standar.

Kanthi UML, sampeyan bisa njlèntrèhaké hubungan antarane entitas beda. Ing kasus kita, iki minangka obyek lan kelas.

Hubungan antarane kelas diterangake kanthi papat jinis panah:

komposisi (komposisi) - subspesies saka agregasi ing ngendi "bagean" ora bisa ana kanthi kapisah saka "kabeh".
agregasi - nggambarake hubungan "bagean" - "kabeh", ing ngendi "bagean" bisa ana kanthi kapisah saka "kabeh". Rhombus dituduhake saka sisih "kabèh".
dependensi - owah-owahan ing siji entitas (merdika) bisa mengaruhi negara utawa prilaku entitas liyane (gumantung). Entitas independen dituduhake ing sisih panah.
generalisasi - hubungan warisan utawa implementasine antarmuka. Ing sisih panah ana superclass utawa antarmuka.

Nyatane, kabeh gampang banget ing kene. Panah pungkasan sejatine tegese siji kelas diwarisake saka kelas liyane. Lan panah pisanan lan kaloro iku siji obyek nyimpen pranala menyang obyek liya. Lan iku kabeh.

Yen berlian link ireng, link kasebut lemah: obyek bisa ana tanpa siji liyane. Yen berlian putih, mula obyek kasebut ana hubungane banget, kayata kelas HttpRequestlan kelas anak HttpRequest.Builder.

1.5 Dhaptar pola

Jinis pola bakal dituduhake kanthi warna lan huruf sing beda:

B- prilaku (prilaku);

C- ngasilake (kreatif);

S- struktural (struktural).

Lan pungkasane, dhaptar 23 pola desain:

C- Pabrik Abstrak

S- Adaptor

S- Jembatan

C- Tukang bangunan

B- Rantai Tanggung Jawab

B- Tim

S- Penghubung

S- Dekorator

S- Fasad

C- cara pabrik

S- oportunis

B- Juru basa

B- Iterator

B- Perantara

B- Penjaga

C- Prototipe

S- Proksi

B— Pengamat

C— Loner

B- Negara

B- Strategi

B- Metode Cithakan

B- Pengunjung