브릿지 패턴은 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있도록 하는 패턴이다. 즉, 기능과 구현에 대해 별도의 클래스로 구현하여 서로의 코드에 간섭하지 않고 변형, 확장할 수 있도록 하는 것이다.
예시 코드
Pizza가 있다. 그리고 Pizza를 상속받은 CheesePizza PineapplePizza 가 있다. 피자는 name과 recipe를 속성으로 가지고, result() 메서드를 호출하면 recipe.getName()이 어떤 값을 반환하는 지에 따라 결과가 달라진다.
Recipe는 인터페이스이고 피자에 수식어를 달아주는 역할을 한다. Recipe을 인터페이스로 구현했기 때문에 Pizza는 Recipe을 자유자재로 바꿔낄 수 있다. Pizza의 종류가 변해도, 새로운 Recipe가 추가돼도, 기존의 코드를 바꿀 필요가 없다.
브릿지 패턴을 사용하면 이런식으로 다양한 종류의 피자를 만들 수 있다. 피자에서 레시피를 추상화하여 독립적인 클래스를 만들었기 때문이다.