Jump to content
php.lv forumi

Design patterns web vidē


Recommended Posts

Labs vakars,

 

nu jau kādu laiku nesekmīgi cenšos atrast jebkādu informāciju par design patterns, kas būtu domāti lietošanai web vidē.

 

info par pašiem design patterns ir pietiekoši, pat esmu ticis pie klasiskās grāmatas "Design Patterns" by Erich Gamma, ...

 

Problēma ir sekojoša - liela daļa no šiem klasiskajiem šabloniem faktiski nav izmantojama web vidē.

Tomēr kā rīks šabloni (patterns) ir visnotaļ neslikts, ja vien to izmanto tur, kur vajadzīgs (piemērs ar "hello world" iekš patterns ar jau pirms kāda laiciņa ir apskatīts ;)

 

vai vēl kāds ir saskāries ar šo lietu un varētu padalīties ar informāciju?

Link to post
Share on other sites

a kam tu viņu izmantosi?

jau sen apspriesta tēma - šablonēšana bremzē visu pasākumu.

un tad kam šablonēšanu piemērot - lieliem saitiem, kuriem svarīga ir ātrdarbība vai maziem saitiem, kuriem dizainu var nomainīt tāpat 1-2?

 

pietam neaizmirstam par pareizu xhtml + css. ar to var paveikt vairāk nekā daži uzskata :)

 

galugalā php pats ir šablonēšanas tūlis.

Link to post
Share on other sites

sākumam derētu precizēt - ka patterns nav gluži tas pats - kas template. Template varētu uzskatīt par vienu no patterns paveidiem.

 

kam izmantošu? būtu interesanti pamācīties no citu programmētāju pieredzes, jo patterns ir tieši šāds rīks - pieredzes nodošanai.

kā arī - par šo lietu ir vēlēšanās rakstīt bakalaura darbu.

 

lieliem vai maziem saitiem - bet nu jau praksē ir pierādījies, ka labi izplānotas klases ļoti atvieglo darbu, ja ne uzreiz, tad pēc tam, kad kaut kas ir jālabo -vai nu izskatā, vai kodā.

 

par xhtml + css zinu neslikti - bet tas attiecas tikai uz izskatu.

Savukārt Patterns - uz visu projektu - sākot no arhitektūras līdz pat pēdējam sīkumam. protams, ka patterns, tāpat kā jebkas cits - jāpielieto tur, kur vajag.

bet lai saprastu, kur vajag - ir jāmācās. un tikai no savas pieredzes mācīties nav tik produktīvi.

 

ps. atļaušos nepiekrist pēdējam teikumam - ja ar šabloniem saprotam - patterns, tad php nav šablonēšanas tūlis. Patterns vispār tiek definēti, neizmantojot kādu konkrētu valodu- viņus var pielāgot gan c++, gan cobol (dažreiz gan ar zināmiem ierobežojumiem)

Link to post
Share on other sites

nu jā, mvc ir viens no. un taisnība, ka ne vienmēr var viņus izmantot. ir reizes, kad pat - nevajag. ;)

 

taatad, viena definīcija:

 

Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.

 

 

cita definīcija:

 

Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution.

Link to post
Share on other sites

Patterni visu pasākumu sabremzē (attiecās uz webu)

Webs ir single-thread pasākums (turklāt secīgs līdz bezgalībai, no A..līdz..vajadzīgajam) krutos MVC naher tur vajag...

 

Webam ir jābūt vienkāršam, ērtam, ātram.

Link to post
Share on other sites
Patterni visu pasākumu sabremzē (attiecās uz webu)

 

esi mērījis?

 

šeit, šķiet, atkal rodas jautājums - kuram patīk oop, un kuram nē.

no pieredzes - lielā projektā pat ļoti atmaksājas laika, kas pavadīts programmējot, ziņā.

 

 

 

starp citu - jautājums jau bija - nevis "vai patterns ir vajadzīgi webam?"

 

bet gan - "vai kāds var padalīties ar info?" tas tā, starp citu ;)

Link to post
Share on other sites

Teikt, ka webam patterni nav vajadzīgi ir neizglītota diršana (atvainojos), jo ne visas web sistēmas ir sīkās web lapeles, ko parasti ikdienā taisa. Par piemēru šis te pats forums ir būvēts uz pamatīgas arhitektūras.

 

Par php design patterniem var kaut ko apskatīties šeit: http://www.phppatterns.com/docs/?idx=design

Link to post
Share on other sites
Teikt, ka webam patterni nav vajadzīgi ir neizglītota diršana (atvainojos), jo ne visas web sistēmas ir sīkās web lapeles, ko parasti ikdienā taisa.

Lielākie iebildumi jau nav par to vai tas ir vajadzīgs vai nevajadzīgs, bet gan par to cik daudz tas atmaksājas uz plānošanas viedokļa un kā tas iespaido performanci (gain/loss).

 

Par to ka tas ir smuki no koda viedokļa manuprāt neviens nešaubās, tai pašā laikā parēķini cik ilga ir viena webprojekta dzīvotspēja uz vienas koda bāzes? Ok, kādu brīdi varam izmantot esošo funklcionalitāti / definētās lietas bet pēc brīža ir slēdziens ka pasākums ir palicis bloated un jāpārraksta no 0.

 

Otrs, webā arvien gadās (lielākoties dēļ stingri nenodefinētām pasūtītāja / lietotāju parsībām u.c. īpatnībām) nākas izmantot un pārveidot itkā iepriekš smuki uztaisītos objektu/paternus utt.. un galugalā tiek taisīti visādi hacki / workaroundi .. kas lenām pa gabaliņam sagrauj visa jēgu.

 

Par piemēru šis te pats forums ir būvēts uz pamatīgas arhitektūras.

Nu ne sūda.. paveroties sourcē (tāpat arī changelogā) tāpat redzams visādas uberfigņas :)

Link to post
Share on other sites
Nu ne sūda.. paveroties sourcē (tāpat arī changelogā) tāpat redzams visādas uberfigņas :)

 

Ok, to es uz bobi minēju ;P - pašam nācies saskārties tikai ar VBulletin.

 

Runājot par visu pārējo, kā jau teicu - webiskām sistēmām nevis lapām web īpatnības nav tik izteiktas (par nenoteiktību viss vairāk atkarīgs no tā, cik spējīgs esi bijis saviem priekšniekiem smadzenes pareizi iegrozīt).

Neviens nenoliegs, ka vispār uz kaut kādas arhitektūras pamata bāzēta sistēma būs vieglāk izstrādājama un uzturāma, nekā pa tiešo augšā bliezta. Un ir taču arī daudzas arhitektūras, kas izstrādātas, paturot prātā nepieciešamību nezaudēt performanci. Rodas Tevis minētais jautājums - vai ir vērts, vai atmaksājas? Nu, lūk šeit lieliski noder minētie patterni, lai nav katru reizi jātērē laiks izstrādājot pilnīgi jauna tipa arhitektūru - paņem gatavu paraugu un viss. Katrs gadījums, protams, ir individuāls, arī es pats procentuāli gandrīz nevienam projektam neesmu nekādu īpašo arhitektūru veidojis, bet reizēm vajag, noder un pat ļoti atmaksājas.

Link to post
Share on other sites

;)

 

un papildinot Kaitnieka teikto - patterns ir viens no rīkiem, ar kura palīdzību veidot lielāku abstrakcijas līmeni.

mazai lapai ar pāris skreeniem tas varbūt neko nedos, bet lielai sistēmai, kurai pēkšņi rodas nepieciešamība visus ekrānus drukāt, piemēram, iekš pdf - laimīgs būs tas, kurš projektējot būs izveidojis to padarīšanu pietiekoši abstraktu un - atvērtu dažādiem papildinājumiem...

 

par phppatterns.com

 

info ir laba, bet jau kādu laiciņu atpakaļ apskatīta.

manuprāt, šai lapai ir viens trūkums - tur atrodamā info ir realizētas patterns php versijas.

 

zinot konkrētā pattern - piemēram, mvc, definīciju, to tāpat nav tik grūti uzkodēt.

ar šo informāciju tā īsti nepietiek ;)

 

ps. agrāk viņiem tā lapa bija daudz smukāka...

 

 

 

 

vienkārši - meklējot informāciju ir nācies saskarties ar to, ka tiek pieminēti "web design patterns". nevis šie klasiskie, bet speciāli webam domātie.

problēma - neko vairāk par šādu pieminēšanu atrast nav izdevies, pat izmantojot pasniedzēja doto iespēju meklēt visādu starptautisku konferenču tikai biedriem pieejamajos materiālos...

Link to post
Share on other sites

runājot par patterniem, templatem un šabloniem. tu pats patternus nosauci par šabloniem, pietam minēji to vairākas reizes ar DESIGN, kā rezultātā nonācu pie secinājuma, ka tu runā par dizaina šablonēšanu.

 

šoreiz piekritīšu Roze un Delfins.

 

dajebkurā normālā aplikācijā tiek rēķināts nevis laiks, kurā dotā aplikācija ir veidota, bet gan laiks, kuru aplikācija patērē konkrētas problēmas/uzdevuma risināšanai.

 

nešaubos, ka priekš developera vieglāk ir taisīt saliekot gatavas klases kopā, visu sajaukt un aidā - viss ideāli strādā. bet tagad padomājam par

* kustomizāciju

* ātrdarbību

 

 

kautvai elementārs piemērs (tikai piemērs, nevajag iedziļināties jēgā):

 

kas ātrāk taisot selectu?

1) izsaukt klasi, kas atbilst tabulai, kura atkal izsauc klasi, kas atbild par datu manipulācijām un galugalā db klasi, kura to visu izpilda

2) pa taisno vēršamies pie db klases ar pieprasījumu selektēt

 

ok uz vienu darbību patērēs par 0.01 sec vairāk, bet ja projektam ir vidēja/liela noslodze? un ja projekts netusējas viens pats uz servera? kopējā servera noslogotība pieaug, kas atkal nozīmē resursu trūkumu...

Edited by hmnc
Link to post
Share on other sites

http://www.phparch.com/shop_product.php?itemid=96

Pats gan vēl neesmu saņēmies nopirkt un izlasīt, taču ja ir tik liela interese, varbūt varam no tevis sagaidīt kādu review :)

 

 

Attiecībā uz paša pieredzi - pārsvarā esmu izmantojis tikai Singletonu un arī to tikai ērtības labad. Teorētiski bez tā pavisam labi var iztikt, bet ņemot vērā attiecīgās klases vienkāršību, par ātrdarbības samazināšanos praktiski nebija vērts domāt.

Link to post
Share on other sites
×
×
  • Create New...