Facade

λ³΅μž‘μ„±μ„ 감좔기 μœ„ν•΄ λ‹¨μˆœν™”λœ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” ꡬ쑰적 λ””μžμΈ νŒ¨ν„΄

μž‘ν•œ μ‹œμŠ€ν…œμ— λ‹¨μˆœν™”λ˜κ³  높은 μˆ˜μ€€μ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‹œμŠ€ν…œκ³Ό 더 μ‰½κ²Œ μƒν˜Έ μž‘μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” ꡬ쑰적 λ””μžμΈ νŒ¨ν„΄μ΄λ‹€.

νΌμ‚¬λ“œ νŒ¨ν„΄μ˜ ꡬ성

  • Facade: ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•˜μœ„ μ‹œμŠ€ν…œμ— μ•‘μ„ΈμŠ€ν•˜λŠ” μ§„μž…μ , κΈ°λ³Έ ν•˜μœ„ μ‹œμŠ€ν…œμ˜ λ³΅μž‘μ„±μ„ μΆ”μƒν™”ν•˜κ³  μˆ¨κΈ°λŠ” λ‹¨μˆœν™”λœ κ³ κΈ‰ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 제곡

  • ν•˜μœ„ μ‹œμŠ€ν…œ: λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ„ κ΅¬μ„±ν•˜λŠ” κ°œλ³„ ꡬ성 μš”μ†Œ λ˜λŠ” 클래슀

μ•„λž˜ μ½”λ“œλŠ” νΌμ‚¬λ“œ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜μ—¬ λ³΅μž‘ν•œ ν•˜μœ„ μ‹œμŠ€ν…œμ„ λ‹¨μˆœν™”λœ μΈν„°νŽ˜μ΄μŠ€λ‘œ λž˜ν•‘ν•˜λŠ” 방법을 보여쀀닀.

// ν•˜μœ„ μ‹œμŠ€ν…œ
class SubSystem1 {
    public void doSomething() {
        System.out.println("SubSystem1");
    }
}

class SubSystem2 {
    public void doSomething() {
        System.out.println("SubSystem2");
    }
}

class SubSystem3 {
    public void doSomething() {
        System.out.println("SubSystem3");
    }
}

// νΌμ‚¬λ“œ
class Facade {
    private SubSystem1 subSystem1;
    private SubSystem2 subSystem2;
    private SubSystem3 subSystem3;

    public Facade() {
        this.subSystem1 = new SubSystem1();
        this.subSystem2 = new SubSystem2();
        this.subSystem3 = new SubSystem3();
    }

    public void doSomething() {
        subSystem1.doSomething();
        subSystem2.doSomething();
        subSystem3.doSomething();
    }
}

class Client {
    Facade facade = new Facade();

    // νΌμ‚¬λ“œλ₯Ό 톡해 ν•˜μœ„ μ‹œμŠ€ν…œμ— μ ‘κ·Ό
    public void doSomething1() {
        facade.doSomething();
        // ...
    }

    public void doSomething2() {
        facade.doSomething();
        // ...
    }
}

νΌμ‚¬λ“œ νŒ¨ν„΄μ˜ 이점

  • ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œ λ‹¨μˆœν™”: μ‚¬μš©ν•˜κΈ° μ‰¬μš΄ 단일 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œλ₯Ό λ‹¨μˆœν™”(ν•˜μœ„ μ‹œμŠ€ν…œμ˜ λ³΅μž‘μ„±μ„ 은닉)

  • μœ μ§€λ³΄μˆ˜μ„± ν–₯상: λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ— λŒ€ν•œ λ³€κ²½ 사항이 Facade 클래슀 내에 ν¬ν•¨λ˜μ–΄ μ½”λ“œλ² μ΄μŠ€μ˜ μœ μ§€ 보수 μš©μ΄μ„± ν–₯상

νŒŒμ‚¬λ“œ νŒ¨ν„΄μ„ μ΄μš©ν•œ μˆœν™˜ μ°Έμ‘° ν•΄κ²°

  • μˆœν™˜ μ°Έμ‘°: 두 개 μ΄μƒμ˜ ν΄λž˜μŠ€κ°€ μ„œλ‘œμ— λŒ€ν•œ μ°Έμ‘°λ₯Ό λ³΄μœ ν•˜κ³  μžˆλŠ” μƒνƒœ

μˆœν™˜ μ°Έμ‘°λŠ” 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ ν”νžˆ λ°œμƒν•˜λŠ” 문제둜, μˆœν™˜ μ°Έμ‘°κ°€ λ°œμƒν•˜λ©΄ μ½”λ“œλ₯Ό μ΄ν•΄ν•˜κΈ° μ–΄λ €μ›Œμ§€κ³  μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ €μ›Œμ§„λ‹€. 이 λ¬Έμ œλŠ” νŒŒμ‚¬λ“œ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜μ—¬ ν•΄κ²°ν•  수 μžˆλ‹€.

  • μˆœν™˜ μ°Έμ‘°κ°€ λ°œμƒν•˜λŠ” μ½”λ“œ

  • νΌμ‚¬λ“œ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜μ—¬ μˆœν™˜ μ°Έμ‘° ν•΄κ²°

ClassBμ—μ„œ ClassAλ₯Ό ν•„μš”λ‘œ ν–ˆλ˜ λ©”μ„œλ“œλ₯Ό λ³„λ„μ˜ Facade 클래슀둜 λΆ„λ¦¬ν•˜μ—¬ ClassBκ°€ 더이상 ClassAλ₯Ό ν•„μš”λ‘œ ν•˜μ§€ μ•Šλ„λ‘ ν•˜μ—¬ μˆœν™˜ μ°Έμ‘°λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€.

Last updated

Was this helpful?