sammensætning og rekursive køreledning

, i denne artikel, viser et enkelt eksempel på anvendelse af recusive køreledning i en sammensat mønster [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. " at forstå recursion må vi først forstå recursion " [ukendt oprindelse], der ikke er en professionel programmør, der har ikke anvendt recursion?jeg vil vædde på, at den første rekursive rutine, at de fleste af de programmører skrev, var en slags findallfiles rutine [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.det smukke ved recursion, er, at det er så simpelt, men resultaterne give den illusion, at koden må være langt mere kompliceret [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. jeg er langsomt ved at omskrive www [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. howtodothings [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.com i min meget lidt fritid [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.for kategoriseringen af artikler var tre niveauer, dyb, hverken mere eller mindre; emne - > kategori - > underkategori [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.en af de forbedringer, jeg har besluttet at tilføje, at stedet er evnen til at rede en ubegrænset mængde niveauer [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.for at gøre det her, jeg har gennemført en meget grundlæggende oop sammensat mønster, som så,,,,, a " basecategory " er en abstrakt klasse, er det eneste mål i livet er at have et navn og egne underkategori [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.a " underkategori " eksisterer egne varer og flere underkategorier [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.a " maincategory " har et billede af de vigtigste side og ejer underkategori [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.min kategorisering kan bestå af mindst to niveauer (maincategory - > underkategori), eller så mange niveauer, som jeg kan lide [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. dernæst i modellen er basisklasse jeg gennemført en afledt attribut kaldet " displayname: string " [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.denne attribut, oprindeligt blev tilføjet, så jeg kunne bruge et enkelt websted confirmdelete [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.aspx udviser navn genstand brugeren ønsker at slette (dette vil typisk være en artikel, men jeg kan genbruge det for ethvert objekt, på alle) [installdir_channeldir] {$uploaddir} //////////////201512 2015120416471772.koden for denne attribut er som følger, offentlige snor displaynamederiveandsubscribe (, isubscriber reevaluatesubscriber, isubscriber resubscribesubscriber) {, ioclservice køreledning = (ioclservice) [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. asiobject() [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.,, serviceprovider [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. getecoservice (type (ioclservice), afkast (serie) [installdir_channeldir køreledning] {$uploaddir} /201512 /2015120416471772. evaluateandsubscribe (det [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. asiobject(), " selv [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. asstring ", reevaluatesubscriber, resubscribesubscriber) [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. asobject,,,, men kun vurderer " selv [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. asstring " mod den nuværende instans [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.dette har den virkning, at defaultstringrepresentation køreledning udtryk ind i modellen, og at returnere den som en streng [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.basecategory har sin defaultstringrepresentation fastsat til " navn " [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. nu her, recursion kommer i den [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.da jeg var på vej ind i en ny underkategori, det tog ikke lang tid at indse, at " asp [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. netto ", sagde ikke noget om, hvor i kategoriseringen struktur, jeg arbejdede [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.ville det ikke være rart, hvis i stedet for bare at se " asp [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. netto ". jeg vil faktisk se " edb - > programmering - > delphi 2005 - > asp [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. netto "?så det er, hvad jeg har gjort, og den skønhed, er, at det ikke tage en enkelt linje kode til at arbejde på vejen, fordi jeg brugte et meget enkelt rekursive køreledning udtryk [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. jeg tilføjede en ny " vej: string " attribut underkategorien klasse, der er fremstillet til ægte, og lave afledning ocl for " parentcategory [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. displayname " [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.kan du huske, at displayname vil bare returnere misligholdelse snor repræsentation, så i dette tilfælde underkategori [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.path er bare returnere displayname moderselskabet [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.det er ikke nogen nytte, indtil du ændre misligholdelse snor repræsentation, som så [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. [installdir_channeldir] {$uploaddir} /201512 /2015120416471772. [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.,, parentcategory [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.asstring + « - > + navn, displayname af enhver kategori er moderselskabets misligholdelse snor repræsentation + en separator + sit eget navn [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.hvad er dets moderselskab misligholdelse snor repræsentation?tja, hvis modervirksomheden er et maincategory så udtrykket " navn " anvendes, hvis moderselskab er også en underkategori så udtrykket " parentcategory [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.asstring + « - > + navn " anvendes - den måde, indtil vi når maincategory [installdir_channeldir] {$uploaddir} /201512 /2015120416471772., er det ikke blot give mig et meget informativt vej attribut, men som en meget behagelig pr. produkt, det giver mig også fuld vej + navn i confirmdelete [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.aspx web - form, når jeg forsøgte at slette en underkategori formål [installdir_channeldir] {$uploaddir} /201512 /2015120416471772.,

ClassDiagram



Previous:
Next Page: