Bridge_Pattern - 8BitsCoding/RobotMentor GitHub Wiki

정의

하고싶은 것이 구현부와 사용부를 나눠서 구현부를 간단한 메모리 변경만으로 바꿔사용하고 싶다.


예시로 설명

int main() {
    PrintMorseCode code = new PrintMorseCode(new FlashMCF);
    //PrintMorseCode code = new PrintMorseCode(new DefaultMCF);

    code->g();
    code->a();
    code->r();
    code->a();
    code->m();
}
class MorseCode {
public:
    private MorseCodeFunction* function;
public:
    MosseCode(MorseCodeFunction* function {
        this->function = function;
    }

    void setFunction(MorseCodeFunction* function) {
        this->function = function;
    }

    void dot() {
        function->dot();
    }

    void dash() {
        function->dash();
    }

    void space() {
        function->space();
    }
};
class MorseCodeFunction {
public:
    virtual void dot();
    virtual void dash();
    virtual void space();
};

실제 구현은 여기서 함.

class FlashMCF : public MorseCodeFunction {
public:
    void dot() {
        printf("번쩍");
    }

    void dath() {
        printf("반짝");
    }

    void space() {
        printf("-");
    }
};

참고사이트