{"id":1399,"date":"2014-02-03T09:42:49","date_gmt":"2014-02-03T08:42:49","guid":{"rendered":"http:\/\/soci.hu\/blog\/?p=1399"},"modified":"2014-02-19T07:10:21","modified_gmt":"2014-02-19T06:10:21","slug":"service-locator-pattern-design-kerdes","status":"publish","type":"post","link":"https:\/\/soci.hu\/blog\/index.php\/2014\/02\/03\/service-locator-pattern-design-kerdes\/","title":{"rendered":"Service locator pattern design k\u00e9rd\u00e9s"},"content":{"rendered":"<p><a href=\"http:\/\/blog.ploeh.dk\/2010\/02\/03\/ServiceLocatorisanAnti-Pattern\/\">Sokak<\/a> <a href=\"http:\/\/dotnetcodr.com\/2013\/08\/08\/design-patterns-and-practices-in-net-the-service-locator-anti-pattern\/\">szerint<\/a> <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff648968.aspx\">Service Locator pattern<\/a> antipattern.<br \/>\nOk, ha egy ezer soros oszt\u00e1lyban (ez m\u00e1r \u00f6nmag\u00e1ban code smell) tucatnyi met\u00f3dusban el vannak dugva service locator h\u00edv\u00e1sok, akkor a k\u00f3dot olvasva neh\u00e9z meghat\u00e1rozni, milyen f\u00fcgg\u0151s\u00e9gei vannak, \u00edgy neh\u00e9z tesztelni is (tudjuk, a k\u00f3dot embereknek \u00edrjuk, nem a compilernek, az meg\u00e9rti a dzsuv\u00e1t is). Ebben a helyzetben a konstruktor injectionnel nyilv\u00e1nval\u00f3an be lehet k\u00fcldeni a f\u00fcgg\u0151s\u00e9geket, az oszt\u00e1ly elej\u00e9t elolvasta azonnal szembe\u00f6tlik, miket kell kifakelni, ha tesztelni akarjuk.<br \/>\nNa, de mi van a facade vagy controller jelleg\u0171 oszt\u00e1lyokkal? Ezek sok tucatnyi m\u00e1s oszt\u00e1llyal m\u0171k\u00f6dnek egy\u00fctt, pont ez a feladatuk, hogy a k\u00fclvil\u00e1gnak ne kelljen a bels\u0151 r\u00e9szleteteket meg\u00e9rteni. Az ilyen oszt\u00e1lyoknak tucatnyi f\u00fcgg\u0151s\u00e9ge van, amelyeket viszont -szerintem- \u00e9rtelmetlen lenne konstrukci\u00f3s id\u0151ben l\u00e9trehozni, f\u0151leg, ha jelent\u0151s r\u00e9sz\u00e9t nem is fogj\u00e1k haszn\u00e1lni a k\u00f6zelj\u00f6v\u0151ben. Ilyenkor tudom\u00e1som szerint nem nagyon marad m\u00e1s, mint hogy a h\u00edvott met\u00f3dusokban service locatorral l\u00e9trehozni a f\u00fcgg\u0151s\u00e9get, \u00e9s beleh\u00edvni.<br \/>\nMindezt csak az\u00e9rt vetem fel, mert rossz \u00e9rz\u00e9sem van, amikor le\u00edrom egy k\u00f3dban, hogy Di.Resolve<IValami>(), de az el\u0151bbi \u00e9rvel\u00e9s alapj\u00e1n meg tudom indokolni, mikor m\u00e9gis csak jogos a service locator.<br \/>\nCsak \u00e9n csin\u00e1lok ebb\u0151l lelkiismereti k\u00e9rd\u00e9st?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sokak szerint Service Locator pattern antipattern. Ok, ha egy ezer soros oszt\u00e1lyban (ez m\u00e1r \u00f6nmag\u00e1ban code smell) tucatnyi met\u00f3dusban el vannak dugva&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,49,13,4],"tags":[],"class_list":["post-1399","post","type-post","status-publish","format-standard","hentry","category-net","category-architektura","category-design","category-szakmai-elet"],"_links":{"self":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1399"}],"version-history":[{"count":2,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1399\/revisions"}],"predecessor-version":[{"id":1412,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1399\/revisions\/1412"}],"wp:attachment":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}