tag: pattern

18Feb

Circuit breaker, avagy mi van akkor, ha nem megy?

Amikor szoftvert írunk, akkor törekszünk arra, hogy bolondbiztos legyen. Amikor webre fejlesztünk sem történik ez másként. Minden tőlünk telhetőt megteszünk annak érdekében, hogy bizony a felhasználó mindig megkapja, amit akar, hiszen nekünk közvetve belőlük van pénzünk. Azonban akadnak olyan esetek, mikor külső tényezők is befolyásolhatják a szolgáltatást, amit nyújtunk? Akkor bizony tudni kell esni. Ahogy manapság egyre nő a microservice hype, egyre gyakrabban fogunk találkozni azzal, hogy bizony, ki kell hívni egy külső service felé, ami nem mindig végződik egy boldog 200-as válasszal. Cikkünkben a Circuit breaker patternről lesz szó és arról, hogy is segíthet ez nekünk, ha külső szolgáltatásokra épül az oldalunk.

Tovább »

09Jul

ISP - Interface segregation principle

Amikor új applikáció tervezésébe kezdünk, akkor nem árt komolyan fontolóra venni, hogy milyen absztrakciókat is fogunk használni az egyes modulok és submodulok esetén. Ha ezen modulok egyike esetünkben egy osztály, akkor az absztrakció formája nem lesz más, mint egy interface. Tegyük fel, hogy ezt létrehoztuk és az adott osztályt implementáltuk is, minden klappol, megkaptuk érte a kis pénzünket és nem utolsó sorban úgy működik, ahogy a megrendelő elképzelte elképzeltük. refactoring-to-solid-code-32-728

Tovább »

08May

Repository-k a verziókövetésen is túl

Amikor az ember kódolásba kezd, akkor gyakorta törekszik arra, hogy a kódja egyes részeit újra tudja hasznosítani, hogy azok modulárisak legyenek, át tudjuk vinni őket A projektből B projektbe, anélkül, hogy reflectionnel megerőszakolnánk az egészet fejfájást okoznánk magunknak vagy másoknak és ugyanolyan könnyedén használható maradjon mindez, mint az A projekt esetében. Azonban mi a helyzet, ha pl. különböző adatforrások között szeretnénk váltani?IC340233

Tovább »

28Apr

Díszítsük fel a wrappert!

A decorator pattern a struktúrális minták közé tartozik, és a célja roppant egyszerű: magába foglal egy másik osztályt és plusz funkcionalitással látja el azt, így az eredeti osztály metódusai érintetlenek maradnak. Nézzük meg hogy is történik mindez!  

Forrás: foodnetwork.com

Forrás: foodnetwork.com

Tovább »

04Apr

Facade pattern

Az elmúlt időszakban kissé eltávolodtunk a kódtól, pedig nem csak rendszerszinten lehet tekinteni itt a dolgokra, így most kicsit visszatérünk a hétköznapi kóder életbe, a tervezési minták világába. Cikkünk témája a facade pattern, aminek célja az, hogy a kliensek számára egy letisztult, egyszerűen használható interfészt biztosítson egy komplex objektumhálózat/modul használatához, miközben elburkolja annak működését. Besorálását tekintve a struktúrális minták közé tartozik, viselkedésében pedig kb. az Adapter ellentéte lesz.

atm140120_20140120_202328_l

Az ATM is egy facade

Tovább »

30Mar

A microservice hype

Már egy jó ideje a csapból is az folyik (szerencsére már megunták), hogy a microservice architektúra mennyire cool és hogy a monolit alkalmazások fejlesztése buzis. A cikkben arról lesz szó, hogy is kell kivitelezni egy ilyet, mitől is microservice, miért ősrégi maga a fogalom, mik a hátulütői, és még sok más! micro-service-architecture

Tovább »

10Nov

Élőben jelentkezünk a helyszínről!

Aki Budapest belvárosában tartózkodik november 25.-én és nem tud jobb alternatívát találni arra mivel is üsse el az időt este 7-től, annak felajánlanék egy alternatívát:

Tervezési minták a valóságban

Hallottál már a tervezési mintákról? Talán már utána is jártál, hogy pontosan mik azok? Esetleg tudod azt is, hogy hol lehet őket használni? Ha a válaszod nem, akkor se csüggedj, mert most minden ezzel kapcsolatos kérdésedre választ kaphatsz. Meetupunkban példákat mutatunk különböző keretrendszerek forráskódjából, mely során Te is megértheted, vajon hol és mikor van létjogosultsága az egyes mintáknak. Sőt, valószínűleg rájössz, hogy már Te is használtad ezeket, csak nem tudtál róla! Jelentkezés: • Önéletrajz elküldésével a meetup[kukac]schonherzbazis.hu-ra "Meetup regisztráció" jeligével. Ebben az esetben a részvétel INGYENES. • Ha korábban már regisztráltál önéletrajzzal, akkor is INGYENES. Csak írj nekünk egy e-mailt a meetup[kukac]schonherzbazis.hu-ra "Meetup regisztráció" jeligével. • Ha nem szeretnél önéletrajzot küldeni, akkor a belépő regisztráció nélkül 1000 Ft, amelyet a helyszínen vásárolhatsz meg: Link a meetup.com -ra.
bouncer A résztvevők közt kisorsolunk egy örök élet és egy ingyen sör kártyát, amit a kidobófiúnál "beválthat"!

03Sep

Strategy pattern, az objektumok lázadása

Minden fejlesztő életében vannak nehéz napok, mikor iOS push notificationt akar megvalósítani C#-al úgy érzi, hogy az általa kreált objektum jónak jó, de mi lenne ha több mindenre lenne jó, anélkül, hogy rommápakolnánk mindenféle plusz metódusokkal? Mi lenne, ha igazából nem is új funkcionalitást akarunk belevinni, csupán a jelenlegi működést akarjuk megváltoztatni, akár futásidőben. Erre és a hasonló kérdésekre kaphatunk választ a pszichológusunknál az alábbi cikkben a strategy pattern által. screen_03

Tovább »

30Aug

Command Pattern és a pénzügy/számvitel

Most, hogy a mai napi orbitális szívás programozási kihívásokon túlestem, ideje megosztani az infót valami másról, hogy mások is szívjanak annyit, mint én.

raf_fighter_command

"Nézd csak, oda kéne egy swipe-olható lightbox-os slider. Te programozó vagy, neked az öt perc!" - Ügyfél

A Command tervezési minta egy az adat-vezérelt minták közül és viselkedési minták közé tartozik. Lényege annyi, hogy a kérés egy objektumba van csomagolva, ilyen formában kerül átadásra az ún. invoker objektum karmai közé. Az utána megkeresi az illetékes ojjektumot ami képes ennek a "parancsnak" a teljesítésére és átadja annak, ami ezek után jó katonához híven teljesíti is azt.

Tovább »

06Jul

Termi(ter)ator 2

A mai téma egy roppant egyszerű tervezési minta lesz, amire - ahogy a későbbiekben kiderül - a 3-31-Leadprogramnyelveink többségében már példát is találunk. Ha valaha volt már dolgod valamilyen adatbázissal (amit erősen remélek), legyen az mongo vagy épp SQL, akkor nagy az esély, hogy tömbökön másztál végig, mikor a lekérések eredményeit jelenítetted meg/végeztél vele műveletet. A végigjárásra a foreach parancsot használtad, amiről nem is sejtenéd, hogy mennyi köze lesz a mai témához.

Tovább »

16Jun

Observer pattern és a Robotics Facility

starcraft_2_observer_by_worthart-d4ibdiy Protoss observer - Ha nem ismerős, akkor annak idején Te is lemaradtál a dolgokról.. Ez a pattern talán segíthet, hogy ne történjen meg újra!

Akit kapott már hátba egy hadseregnyi zergling, az pontosan tudja, hogy jó dolog, ha időben értesülünk a dolgokról körülöttünk. Az objektumokkal sincs ez másként, bizony őket sem érinti pozitívan, ha bezergelik őket lemaradnak a számukra fontos eseményekről. A mostani témánk az observer pattern lesz, ami a viselkedési minták egyike. Nem, nem a kémkedésről szól, a működése leginkább a hírlevelek világához kötődik, de nem kell megijedni, csak a valóságközeli példák miatt hoztam fel. Tegyük fel, hogy szeretnénk hírlevelet értesítőt küldeni a felhasználóinknak, amikor egy adott adatbázis tábla módosul. Az ilyen és hasonló feladatokra találták ki az observer pattern-t, aminek a lényege, hogy az A objektum "feliratkozik" bizonyos eseményekre, ami események bekövetkeztekor értesítve lesz, vagyis meghívunk rajta egy metódust. De lássuk ezt valami csontszáraz példán át:

Tovább »

16Feb

Builder Pattern és a 7 hardveres

Mai cikkemben a Builder Pattern kerül terítékre, hogy egy újabbat leleplezzünk a létrehozási minták közül. Mielőtt azonban beleugranánk abba, hogy mit is csinálunk ezen mintában, előtte valamit át kell beszélnünk, ami az objektumaink interfészével és működésével kapcsolatos.inception-trailer-movie-leonardo-de-caprio1 Vegyünk egy konkrét példát: Van egy controllerosztályunk, legyen pl. AjaxController, amivel az oldalunkra érkező ajax lekéréseinket szeretnénk kezelni.

Tovább »

29Jan

Tervezési minták - Adapter pattern

Kicsit megtörjük most a sort és a létrehozási minták helyett (amik közül a jómunkásember Builder következne) egy másik csoportból fogunk elővenni egyet, mégpedig a struktúrális minták közül, az adapter pattern-t. Ezen mintának a lényege, hogy két inkompatibilis interfész között hidat képez. Minderre egy különálló osztályt fogunk használni, aminek az a feladata, hogy a két független vagy éppen inkompatibilis osztály funkcionalitását kombinálja.1280px-Notebook-Computer-AC-Adapter A fenti kép is jó például szolgálhat. A laptopunk akkumulátorát és a konnektort egy adapter köti össze, ami a két összeférhetetlen "interfészt" fogja működőképessé tenni. Ellenben írjunk egy példát, az mindig segít. Tegyük fel, hogy oldalunk egy külső API-t használ és ez a szolgáltatás lassú/netán nem mindig elérhető, így a tartalmát szeretnénk gyorsítótárazni, na meg az API kulcsunkat se akarjuk mindenáron pörgetni, nehogy túllépjük a limitet. Ezt a gyorsítótárazást először balga módon a fájlrendszerbe tesszük.

Tovább »

2014-2018 © Letscode.hu. Minden jog fenntartva. Build verzió: