브리지 모드 - 7가지 구조형 모델 중 하나

2711 단어

1. 앞말


앞의 학습을 통해 알 수 있듯이 한 대상이 다른 대상을 가지고 있을 때 사실은 두 대상이 연관된 것으로 이해할 수 있다.이런 관계는 유형과 같지 않은 계승은 정태적이고 변할 수 없으며 반대로 매우 높은 유연성을 가지고 흔히 볼 수 있는 결합 방식이다.결합도가 낮을 때 소유자와 피소유자는 독립적으로 변화하고 심지어 확장할 수 있으며 서로 영향을 주지 않는다.

2. 개념


브리지 모델은 추상적인 부분과 실현된 부분을 분리하여 그것들이 독립적으로 변화할 수 있도록 한다.그 중에서'교접'은 교량의 방식으로 연결하는 것을 가리키는데 연결하는 대상은 분리된 추상적인 부분과 실현된 부분이다.
하나의 클래스의 속성은 각자 변화가 발생하고 클래스에 영향을 미친다. 이것은 클래스가 서로 다른 차원의 변화를 가진다는 것을 의미한다.'추상화','이루다'는 바로 이런 두 가지 차원이다.컵커피를 예로 들면 추상적으로 분류하면 속성 컵과 커피가 있다.조금 다른 것은 브리지 모드에서'컵커피'대상은 실제 컵의 기능만 있고'커피'대상을 보유함으로써 완전한 기능을 가지게 된다는 것이다.다음 장면에서 장식 패턴과 비교하는 것을 주의한다.

3. 장면


어느 날 커피숍에 갔는데 커피 한 잔 시켰어요.점원은 분명히 어떤 커피를 원하느냐고 물어볼 것이다. 푸른 산, 라떼, 설탕을 넣지 않은 것을 선택할 수 있다.골라서 어떤 점원은 유리, 도자기, 프린트 등 어떤 컵을 좋아하느냐고 물어본다.

4. 쓰기

// 1. , 
public interface Coffee {
    // 2. 
    void make();
}
// 1. , 
public abstract class CupCoffee {

    // 2. , 
    private Coffee mCoffee;

    public CupCoffee(Coffee coffee) {
        mCoffee = coffee;
    }

    protected void make() {
        mCoffee.make();
    }

    // 3. , 
    public abstract void holder();
}

추상적인 부분과 실현된 부분이라는 두 차원의 구체적인 논리를 실현하고 필요하다면 보완하고 확장할 수 있다.여기는 특히 장식 모델과 같지만 장식 모델에서 대리자와 피대리자는 같은 인터페이스를 실현해야 하고 브리지 모델의 두 부분은 각각 다른 추상을 실현해야 한다는 것을 주의하십시오.
public class BlueMountain implements Coffee {
    @Override
    public void make() {
        System.out.println(" ");
    }
}

public class Latte implements Coffee {
    @Override
    public void make() {
        System.out.println(" ");
    }
}
public class Glass extends CupCoffee {
    public Glass(Coffee coffee) {
        super(coffee);
    }

    @Override
    public void holder() {
        make();
        System.out.println(" ");
    }
}

public class Ceramic extends CupCoffee {
    public Ceramic(Coffee coffee) {
        super(coffee);
    }

    @Override
    public void holder() {
        make();
        System.out.println(" ");
    }
}

사용 시 인터페이스나 추상류를 최대한 사용하여 결합도를 낮추고 후기 유지보수를 편리하게 합니다.
public class Client {
    public static void main(String[] args) {
        //  
        Coffee blueMountain = new BlueMountain();
        new Glass(blueMountain).holder();
        Coffee latte = new Latte();
        new Ceramic(latte).holder();
    }
}

5. 요약


브리지 모드는 사실 뚜렷한 단점이 없다. 만약 정말로 계산한다면 어떤 상황에서 제어를 잘 하지 못할지도 모른다.모든 다차원 변화류나 여러 나무상류 간의 결합은 브리지 모드로 결합을 풀 수 있기 때문에 분리가 필요한지, 어떻게 분리해야 하는지, 이런 적당한 척도 파악은 매우 시련을 겪는다.과도한 분리는 추상적인 종류와 인터페이스의 폭발성을 증가시키고 오히려 코드의 읽기 가능성을 떨어뜨리며 사용자의 사용에도 영향을 미친다.

좋은 웹페이지 즐겨찾기