Software design pattern

Ebunjiniyela be-software, ubunjiniyela, iphethini yokwakheka kwesoftware iyisisombululo esijwayelekile, esisebenzisekayo senkinga evame ukwenzeka ngaphakathi komongo inikezwe ekwakhiweni kwesoftware. Akuyona iphethini eqediwe engaguqulwa ngqo ibe ngumthombo noma ikhodi yomshini . Esikhundleni salokho, yincazelo noma isifanekiso sendlela yokuxazulula inkinga engasetshenziswa ezimeni eziningi ezihlukile. Amaphethini wokuqamba enza izinto ezihlelekile okuhlelekile ongazisebenzisa umxazululi ukuxazulula izinkinga ezivamile lapho kuklanywa isakhiwo noma uhlelo.

Amaphethini wokuklanywa okwenzelwe izinto ngokuvamile akhombisa ubudlelwane nokuxhumana phakathi kwamakilasi noma izinto, ngaphandle kokucacisa amakilasi wokugcina wesicelo noma izinto ezibandakanyekile. Amaphethini asho ukuthi isimo esingaguquki angahle afakelwe izilimi ezisebenzayo, amanye amaphethini angahunyushwa ngokungadingekile ngezilimi ezakhekile ukusekela ukuxazulula inkinga abazama ukuyixazulula, futhi amaphethini aqondiswe entweni awafaneleki ezintweni ezingahambisani nezilwimi zezinto ezenzelwene (Object-oriented)

Amaphethini wokuqamba angabukwa njengendlela ehlelekile yohlelo lokusebenza lwekhompyutha phakathi kwamazinga we- paradigm yohlelo kanye ne- algorithm yekhonkrithi.

Umlando

Amaphethini aqala njengomqondo wokwakha ngu -Christopher Alexander ekuqaleni konyaka we-1966 (cf "Isibonelo Semikhonto," JOURNAL OF AIP, Septhemba, 1966, Vol. 32, No. 3, iphe. 273-278). Ngo-1987, uKent Beck noWard Cunningham baqala ukuzama ngomqondo wokusebenzisa amaphethini ezinhlelweni - ngokukhethekile amaphethini ezilimi - futhi bethula imiphumela yabo engqungqutheleni ye- OOPSLA ngalowo nyaka. Eminyakeni elandelayo, u-Beck, uCunningham nabanye balandela lo msebenzi.

Amaphethini okuklama athola ukuthandwa kusayensi yamakhompiyutha ngemuva kokuba incwadi <i id="mwJQ">Design Designs: Elements of Reusable Object-Oriented Software</i> yashicilelwa ngonyaka we-1994 ngababizwa nge- "Gang of Four" (Gamma et al.), Esivame ukufushaniswa ngokuthi "GoF". Ngawo lowo nyaka, kwaqhutshwa inkomfa yokuqala yezilimi ezihleliwe, futhi ngonyaka olandelayo kwasungulwa iPortland Pattern Repository ukuze kube yimibhalo yamaphethini wokuqamba. Isilinganiso sethemu sihlala siyindaba yokuphikisana. Izincwadi eziphawuleka kunhlobo lwephethini yoyilo zifaka:

  • Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 978-0-201-63361-0. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 978-0-201-63361-0. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 978-0-201-63361-0.
  • Brinch Hansen, Per. Studies in Computational Science: Parallel Programming Paradigms. Prentice Hall. ISBN 978-0-13-439324-7. Brinch Hansen, Per. Studies in Computational Science: Parallel Programming Paradigms. Prentice Hall. ISBN 978-0-13-439324-7. Brinch Hansen, Per. Studies in Computational Science: Parallel Programming Paradigms. Prentice Hall. ISBN 978-0-13-439324-7.
  • Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter. Pattern-Oriented Software Architecture, Volume 1: A System of Patterns. John Wiley & Sons. ISBN 978-0-471-95869-7. Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter. Pattern-Oriented Software Architecture, Volume 1: A System of Patterns. John Wiley & Sons. ISBN 978-0-471-95869-7. Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter. Pattern-Oriented Software Architecture, Volume 1: A System of Patterns. John Wiley & Sons. ISBN 978-0-471-95869-7.
  • Beck, Kent (1997). Smalltalk Best Practice Patterns. Prentice Hall. ISBN 978-0134769042. Beck, Kent (1997). Smalltalk Best Practice Patterns. Prentice Hall. ISBN 978-0134769042. Beck, Kent (1997). Smalltalk Best Practice Patterns. Prentice Hall. ISBN 978-0134769042.
  • Schmidt, Douglas C.; Stal, Michael; Rohnert, Hans; Buschmann, Frank. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects. John Wiley & Sons. ISBN 978-0-471-60695-6. Schmidt, Douglas C.; Stal, Michael; Rohnert, Hans; Buschmann, Frank. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects. John Wiley & Sons. ISBN 978-0-471-60695-6. Schmidt, Douglas C.; Stal, Michael; Rohnert, Hans; Buschmann, Frank. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects. John Wiley & Sons. ISBN 978-0-471-60695-6.
  • Fowler, Martin (2002). Patterns of Enterprise Application Architecture. Addison-Wesley. ISBN 978-0-321-12742-6. Fowler, Martin (2002). Patterns of Enterprise Application Architecture. Addison-Wesley. ISBN 978-0-321-12742-6. Fowler, Martin (2002). Patterns of Enterprise Application Architecture. Addison-Wesley. ISBN 978-0-321-12742-6.
  • Hohpe, Gregor; Woolf, Bobby. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley. ISBN 978-0-321-20068-6. Hohpe, Gregor; Woolf, Bobby. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley. ISBN 978-0-321-20068-6. Hohpe, Gregor; Woolf, Bobby. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley. ISBN 978-0-321-20068-6.
  • Freeman, Eric T; Robson, Elisabeth; Bates, Bert; Sierra, Kathy. Head First Design Patterns. O'Reilly Media. ISBN 978-0-596-00712-6. Freeman, Eric T; Robson, Elisabeth; Bates, Bert; Sierra, Kathy. Head First Design Patterns. O'Reilly Media. ISBN 978-0-596-00712-6. Freeman, Eric T; Robson, Elisabeth; Bates, Bert; Sierra, Kathy. Head First Design Patterns. O'Reilly Media. ISBN 978-0-596-00712-6.

Yize amakhethini wokuqamba esetshenziswe isikhathi eside, ukwenziwa ngokusemthethweni komqondo wamaphethini wokuqamba kwehle iminyaka eminingi. [1]

Ukwenza

Amaphethini wokuqamba angasheshisa inqubo yokuthuthuka ngokunikeza ubuhlakani bokuvivinya obufakazelwe. [2] Idizayini ephumelelayo yesoftware idinga ukucubungula izingqinamba ezingeke zibonakale kuze kamuva ekuqalisweni. Ikhodi esanda kubhalwa phansi ingahlala iba nezinkinga ezicashile ezithathe isikhathi ukuthi zitholwe, izingqinamba kwesinye isikhathi ezingadala izinkinga ezinkulu ngokuhamba kwesikhathi. Ukuphinda usebenzise amaphethini wokuqamba kusiza ukuvikela izindaba ezinjalo ezicashile   , futhi kuthuthukisa ukufundwa kwekhodi kwenzelwa abakhodi nabaklami abajwayele amaphethini.

Ukuze uzuze ukuguquguquka, amaphethini wokuqamba avame ukwethula amazinga ongezekile we- indirection, kwezinye izimo angaphikisana nemiklamo evelayo futhi alimaze ukusebenza kwesicelo.

Ngokwencazelo, iphethini kufanele ihlelwe kabusha ohlelweni ngalunye olusebenzisayo. Njengoba abanye ababhali bebona lokhu njengesinyathelo esibuyela emuva ekusebenzeni kabusha kwesoftware njengoba kunikezwe izakhi, abacwaningi basebenze ukuguqula amaphethini abe yizakhi. UMeyer no-Arnout bakwazile ukuhlinzeka ngezakhi eziphelele noma ngokwengxenye zezingxenye ezimbili kwezintathu zamaphethini abazama ngayo. [3]

Amasu wokuqamba amasoftware kunzima ukuwasebenzisa ebangeni lezinkinga ezibanzi.   Amaphethini wokuqamba anikezela ngezixazululo ezijwayelekile, ezibhalwe ngefomethi engadingi imininingwane eboshelwe enkingeni ethile.

Isakhiwo

Amaphethini wokuqamba akhiwa izigaba eziningana (bona §  Imibhalo engezansi). Okuthakazelisa kakhulu yizigaba zoBumbano, Ababambiqhaza kanye nezigaba Zokusebenzisana. Lezi zingxenye zichaza motif design : a prototypical micro-architecture ukuthi onjiniyela bakopisha futhi bazivumelanise nemiklamo yabo ethile ukuxazulula inkinga esetshenziswayo echazwe yiphethini yokuqamba. Isakhiwo esincanyana senhlanganyela seqoqo lezindawo zohlelo (isib, amakilasi, izindlela ...) kanye nobudlelwano bawo. Abathuthukisi basebenzisa iphethini lokuklama ngokwazisa kumiklamo yabo le-prototypical micro-architecture, okusho ukuthi izakhiwo ezincane ezakhiweni zazo zizoba nesakhiwo nenhlangano efana ne-design motif ekhethiwe.

Amaphethini akhethekile wesizinda

Kwenziwe futhi imizamo yokuhlanganisa amaphethini wokuqamba ezizindeni ezithile, kufaka phakathi ukusetshenziswa kwamaphethini wokuqamba akhona kanye namaphethini wokuqamba wesizinda esithile. Izibonelo zifaka amaphethini esakhiwo sokusebenziseka komsebenzisi, [4] ukubonwa kolwazi, [5] idizayini evikelekile, [6] "ukusebenziseka okuphephile", ukwakhiwa kwewebhu [7] nokuklama imodeli yebhizinisi. [8]

Izilimi zonyaka zeKhethini Yezinhlelo Zokuhlela [9] zifaka izibonelo eziningi zamaphethini akhethekile wesizinda.

Ukuhlukaniswa nohlu

Amaphethini wemiklamo ahlukaniswe ngezigaba ezi-3 ezisuselwa kuhlobo lwenkinga azixazululelayo. Amaphethini wokudala anika amandla okwenza izinto ngokusekelwe indlela edingekayo nangendlela elawulwayo. Amaphethini ezakhiwo akhuluma ngokuhlela amakilasi ahlukene nezinto zokwakha izakhiwo ezinkulu nokunikeza ukusebenza okusha. Ekugcineni, izindlela zokuziphatha zimayelana nokuhlonza amaphethini wokuxhumana ajwayelekile phakathi kwezinto futhi aqaphele lamaphethini.

Amaphethini wokudala

IgamaIncazeloKumaphethini OkuklamaKuKhodi Qeda [10]Okunye
Imbonistyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ibhulohostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Inhlanganiselastyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Umhlobisistyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Into yokunwebekastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Agile Software Development, Principles, Patterns, and Practices[11]
I-facadestyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
I-Flyweightstyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Isilawuli sangaphambilistyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|J2EE Patterns[12]

PoEAA[13]

Umakastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Effective Java[14]
Modulestyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ummelistyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Iwele [15]style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A

Amaphethini ezakhiwo

IgamaIncazeloKumaphethini OkuklamaKuKhodi Qeda [10]Okunye
Adapter, Wrapper, noma Translatorstyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ibhulohostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Inhlanganiselastyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Umhlobisistyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Into yokunwebekastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Agile Software Development, Principles, Patterns, and Practices[11]
I-facadestyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
I-Flyweightstyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Isilawuli sangaphambilistyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|J2EE Patterns[12]

PoEAA[13]

Umakastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Effective Java[14]
Modulestyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ummelistyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Iwele [16]style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A

Amaphethini wokuziphatha

IgamaIncazeloKumaphethini OkuklamaKuKhodi Qeda [10]Okunye
Ibhodi emnyamastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Uhlobo lomthwalo wemfanelostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Umyalostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Umhumushistyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
I-Iteratorstyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Umlamulistyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
UMementostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Into engekhostyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Umbukeli noma Shicilela / bhalisastyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Incekustyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ukucaciswastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Isimostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Isustyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Indlela yesifanekisostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Isivakashistyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
IgamaIncazeloKu- POSA2 [17]Okunye
Into esebenzayostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ukungabazastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Izici zokubophastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ikhompiyutha ekhompyuthenistyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Kuhlolwe kukabiliYehlisa isendlalelo sokuthola ukhiye ngokuhlola kuqala inqubomgomo yokukhiya ('icebo lokukhiya') ngendlela engaphephile; kuphela uma lokho kuphumelela ukwenza inqubo yangempela yokukhiya.

Kungavikeleka uma kusetshenziswa ezinye izinhlanganisela zolimi / zehadiwe. Ngakho-ke kwesinye isikhathi kungabhekwa njengephethini le- anti .

Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Umcimbi osuselwa kumcimbistyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ukumiswa okuqashiwestyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Joyinastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Khiyastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|PoEAA[21]
Imodeli yokwakheka kwemilayezostyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Qapha intostyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
I-Reactorstyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ilokhi yokubhalastyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ishedulistyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Ichibi lamanzistyle="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|Cha| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A
Isitoreji esinqunyelwe i-Threadstyle="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|Yes| style="background: #ececec; color: grey; vertical-align: middle; text-align: center; " class="table-na" | N/A

Imibhalo

Imibhalo yephethini lokuklama ichaza umongo lapho iphethini isetshenziswa khona, amandla ngaphakathi komongo iphethini elifuna ukuwaxazulula, kanye nekhambi eliphakanyisiwe. [22] Akukho fomethi eyodwa, ejwayelekile yamaphethini wokuklama. Esikhundleni salokho, izinhlobo ezahlukahlukene zisetshenziswe ngababhali bephethini abahlukile. Kodwa-ke, ngokusho kukaMartin Fowler, izinhlobo ezithile zamaphethini ziye zaziwa kakhulu kunabanye, futhi ngenxa yalokho zaba ngamaphuzu okuqala ajwayelekile emizamo emisha yokubhala iphethini. [23] Isibonelo esisodwa sefomethi yemibhalo evame ukusetshenziswa yileso esisetshenziswa u- Erich Gamma, uRichard Helm, uRalph Johnson, noJohn Vlissides encwadini yabo Designamps . Inezingxenye ezilandelayo:

  • Igama Lephethini Nokwehlukanisa: Igama elichazayo nelingafani elisiza ekuboneni nasekubhekiseleni kuphethini.
  • Inhloso: Ukuchazwa kwenhloso ngemuva kwephethini nesizathu sokuyisebenzisa.
  • Yaziwa Futhi ngokuthi: Amanye amagama wephethini.
  • Ukugqugquzela (Amandla): Isimo esinezinkinga kanye nomongo lapho leli phethini lingasetshenziswa khona.
  • Ukusebenza: Izimo lapho le ndlela isetshenziswa khona; umongo wephethini.
  • Ukwakheka: Ukuboniswa okucacisayo kwephethini. Imidwebo yekilasi kanye nemidwebo yekusebenza ingasebenziselwa lenjongo.
  • Ababambiqhaza: Uhlu lwamakilasi nezinto ezisetshenziswe kuphethini nezindima zawo ekwakhiweni.
  • Ukusebenzisana: Incazelo yokuthi amakilasi nezinto ezisetshenziswe kuphethini zisebenzisana kanjani.
  • Imiphumela: Incazelo yemiphumela, imiphumela emibi, nokuhweba okukhohlakele okubangelwa kusetshenziswa iphethini.
  • Ukuqaliswa: Ukuchazwa kokusetshenziswa kwephethini; ingxenye yesisombululo sephathini.
  • Ikhodi Eyisibonelo: Umzekeliso wendlela iphethini elingasetshenziswa ngayo olimini lwezinhlelo.
  • Ukusetshenziswa okwaziwayo: Izibonelo zokusetshenziswa kwangempela kwephethini.
  • Amaphethini ahlobene: Amanye amaphethini anobuhlobo obuthile nephethini; ukuxoxa ngomehluko phakathi kwephethini namaphethini afanayo.

Ukugxekwa

Kuqashelwe ukuthi amaphethini wokuqamba angaba nje uphawu lokuthi ezinye izici zishoda ngolimi olunikeziwe lwezinhlelo ( iJava noma i- C ++ ngokwesibonelo). UPeter Norvig ukhombisa ukuthi amaphethini ayi-16 kwayi -23 asencwadini ye- Design Patterns (ebhekiswe kakhulu ku-C ++) ayenziwa lula noma aqedwe (ngosizo oluqondile lolimi) eLisp noma iDylan . Ukubukwa okuhlobene nakho kwenziwa nguHannemann noKiczales abasebenzise amaphethini amaningi wokuqamba angama-23 besebenzisa ulimi olususelwa kuzinhlelo (AspectJ) futhi bakhombisa ukuthi ukuncika kwezinga lekhodi kususwe ekusetshenzisweni kwamaphethini wokuqamba we-17 kwayi-23 nokuthi isisekelo-esigxile izinhlelo zingenza lula ukwenziwa kwamaphethini wokuqamba. Template:Ifsubst Bheka futhi nendatshana kaPaul Graham ethi "Revenge of the Nerds".

Ukusetshenziswa okungafanele kwamaphethini kungandisa ukuxaka okungadingekile. [24]