Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Ez egy AI által fordított bejegyzés.

제이온

[Hatékony Java] 5. pont: Ne adja meg a forrásokat, hanem használjon függőségi injektálást

  • Írás nyelve: Koreai
  • Referencia ország: Minden ország country-flag

Válasszon nyelvet

  • Magyar
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी

A durumis AI által összefoglalt szöveg

  • Ha egy osztály belsőleg egy vagy több erőforrástól függ, akkor kerülje a statikus segédprogram-osztályok és a szinglettek használatát, és használat helyett függőségi injektálást alkalmazzon.
  • A függőségi injektálás segítségével javítható az osztály rugalmassága, újrafelhasználhatósága és tesztelhetősége, és a forrásokat a konstruktorban, statikus gyárban, építőben stb. lehet bevinni.
  • A függőségi injektálást a forrás maga vagy a forrásgyár átadásával lehet használni, és a nagyszámú függőséggel rendelkező projektekben hatékonyabb a függőségi injektálási keretrendszer használata.

Ha egy osztály belsőleg egy vagy több erőforrásra támaszkodik, és ezek az erőforrások befolyásolják az osztály működését, akkor a szingletons és a statikus segédprogramok osztályait nem szabad használni.


Ezt az erőforrást nem kell az osztálynak közvetlenül létrehoznia, hanem a szükséges erőforrást a konstruktornak kell átadnia. Az attribútumok függőségének befecskendezése révén javíthatjuk az osztály rugalmasságát, újrafelhasználhatóságát és tesztelhetőségét.


Példa

Példa statikus segédprogram osztályra

public class SpellChecker {

    private static final Lexicon dictionary = new Lexicon();

    private SpellChecker() {
    }

    public static boolean isValid(String word) {
        // logika a szótár használatával
    }

    public static List suggestions(String typo) {
        // logika a szótár használatával
    }

Ez a segédprogram osztály feltételezi, hogy csak egy szótár létezik. A valóságban azonban a szótárak általában nyelvenként külön vannak, sőt vannak olyan esetek is, amikor egy külön szótár van az egyedi szavakhoz.


Példa szingletons osztályra

public class SpellChecker {

    private final Lexicon dictionary = new Lexicon();

    public static SpellChecker INSTANCE = new SpellChecker();

    private SpellChecker() {
    }

    public static boolean isValid(String word) {
        // logika a szótár használatával
    }

    public static List suggestions(String typo) {
        // logika a szótár használatával
    }


A szingletons osztály is ugyanazt a hibát követi el, mint a fenti példa, mivel csak egy szótárat feltételez.


Megoldás 1 - Töröljük a final kulcsszót a mezőből.

public class SpellChecker {

    private Lexicon dictionary = new Lexicon();

    public static SpellChecker INSTANCE = new SpellChecker();

    private SpellChecker() {
    }

    public static void changeDictionary(Lexicon dictionary) {
        this.dictionary = dictionary;
    }

    public static boolean isValid(String word) {
        // logika a szótár használatával
    }

    public static List suggestions(String typo) {
        // logika a szótár használatával
    }


A statikus segédprogram osztályban vagy a szingletons osztályban törölhetjük a final kulcsszót a dictionary mezőből, és lehetővé tehetjük, hogy a szótárat külsőleg egy másik szótárra cseréljük. Ez a megközelítés azonban kényelmetlen, és egyidejűségi problémákat is okozhat többszálas környezetben.


Megoldás 2 - Használjuk az attribútumok függőségének befecskendezését.

public class SpellChecker {

    private final Lexicon dictionary;

    public SpellChecker(Lexicon dictionary) {
        this.dictionary = dictionary;
    }

    public static boolean isValid(String word) {
        // logika a szótár használatával
    }

    public static List suggestions(String typo) {
        // logika a szótár használatával
    }


A fenti példából láthatjuk, hogy a statikus és a szingletons osztályok nem támaszkodhatnak belső erőforrásokra. Vagyis az erőforrásokat külsőleg kell beadni.


Az attribútumok függőségének befecskendezését használó osztályok a final kulcsszónak köszönhetően garantálják a változatlanságot, és több erőforrás-példányt támogatnak. Az attribútumok függőségének befecskendezése a konstruktoron kívül statikus gyárakban és építőkben is használható.


Az attribútumok függőségének befecskendezésekor nemcsak az erőforrást közvetlenül adhatjuk át, hanem gyakran használják az erőforrás-gyárak átadását is. A gyár olyan objektum, amely adott típusú példányt hoz létre minden hívásakor. Ez a megközelítés a gyármetodus-mintázat, és a Java 8-ban a Supplier a gyár tökéletes példája.


public static List create(Supplier generator) {
    ...


A gyár típusparaméterét gyakran korlátozott vadkártyatípus használatával korlátozzák. Ez a megközelítés lehetővé teszi a kliensek számára, hogy a gyárba bármilyen típust behelyettesítsenek, amely a megadott típus altípusa.


Az attribútumok függőségének befecskendezése javítja a rugalmasságot és a tesztelhetőséget, de nagymértékben növeli a költségeket a nagyszámú függőséggel rendelkező projekteknél. Ilyen esetekben az attribútumok függőségének befecskendezésének keretrendszere (például Dagger, Guice, Spring) csökkenti a költségeket.


Forrás

제이온
제이온
제이온
제이온
[Hatékony Java] 3. elem: Privát konstruktor vagy felsorolási típus használatával biztosítsd a szingletonságot A Java-ban a szingletonsablon háromféleképpen valósítható meg (közönséges statikus tag, statikus gyármetódus, felsorolási típus). Bemutatjuk ezeknek a módszereknek az előnyeit és hátrányait, valamint az arra vonatkozó figyelmeztetéseket, hogy mi történik,

2024. április 27.

[Hatékony Java] 4. elem: Ha meg szeretné akadályozni az instancíázást, használjon privát konstruktort A csak statikus metódusokat és mezőket tartalmazó segédprogram-osztályok esetében célszerű a konstruktort priváttá tenni, hogy megakadályozzák az instancíázást. Ez megakadályozza, hogy a felhasználók automatikusan generáltnak gondolják a konstruktort, és

2024. április 28.

[Hatékony Java] 6. pont: Kerülje a felesleges objektum létrehozását Útmutató a Java-ban a felesleges objektum létrehozásának minimalizálásához. A String, Boolean és egyéb immutabilis objektumok esetében célszerű literálokat használni, míg a reguláris kifejezéseknél a Pattern példányokat érdemes gyorsítótárazni. Emellett a

2024. április 28.

Koncepcionális adatmodellezés A koncepcionális adatmodellezés az entitások elkülönítésének és az entitások közötti kapcsolatok ERD-ként való ábrázolásának folyamata. Az entitások független információs egységek, az attribútumok pedig az entitások által birtokolt adatok. Az azonosítók e
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

2024. április 8.

Logikai adatmodellezés A logikai adatmodellezés a konceptuális adatmodellezésnek a relációs adatbázis-paradigmához igazodó átalakítása, amely magában foglalja az 1:1, 1:N, N:M relációk kezelését, valamint a normalizálás révén az adatintegritás biztosítását. A 1NF, 2NF, 3NF szak
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

2024. április 9.

Hogyan akadályozza meg a Rust a párhuzamosítási hibákat A Rust egy erőteljes nyelv, amely megoldja a párhuzamos programozás kihívásait. A típusrendszere és a tulajdonmodell biztosítja az adatok biztonságos átvitelét és megosztását a szálak között. A belső változtathatóság mintái, mint a Mutex, a Channel és az
곽경직
곽경직
곽경직
곽경직
곽경직

2024. március 28.

[SI fejlesztő történetek] 01. Kerüljük az SI cégeket? Az SI cégek nem túl népszerűek a kezdő fejlesztők körében, de jó lehetőséget kínálnak a tapasztalatszerzésre. Ugyanakkor szem előtt kell tartani a határidő-nyomást és az alacsony fizetést. Az SI cég választásakor ügyeljünk a tapasztalat-duplázásra és az a
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

2024. április 16.

[Nem informatikai szakember, de fejlesztőként akarok túlélni] 14. Gyakran feltett technikai interjúkérdések összefoglalása kezdő fejlesztők számára Útmutató a kezdő fejlesztők számára a technikai interjúra való felkészüléshez. A fő memóriaterület, adatstruktúrák, RDBMS és NoSQL, eljárási és objektumorientált, átírás és túlterhelés, oldalcserélő algoritmusok, folyamatok és szálak, OSI 7-réteg, TCP és
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

2024. április 3.

A magánbefektetők előnyei a Private Equity-vel szemben: A készpénz a lehető leggyorsabban, de nem kell mindent felhasználni A Private Equity hajlamos arra, hogy a pénzeszközöket gyorsan befektesse a magas hozam elérése érdekében, ami kockázatos ügyleteket eredményezhet. Különösen a vakalapok (Blind Fund) esetében, ahol a befektetés célpontja nem áll rendelkezésre, a gyors befe
고집스런가치투자
고집스런가치투자
고집스런가치투자
고집스런가치투자

2024. április 3.