-
[정보처리기사] 정처기 재수 2일차: Bridge 패턴(java)정보처리기사 2022. 9. 24. 21:13
Bridge
- 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴
- 구현뿐만 아니라, 추상화된 부분까지 변경해야 하는 경우 활용
java예시
bridge패턴 구성 요소
- abstraction : 기능 계층의 최상위 클래스
- refindedAbstraction : 기능 계층에서 새로운 기능을 확장한 클래스
- implementor : 기능 계층에서 실제 기능을 구현하기 위한 인터페이스
- concreteImplementor : 실제 기능을 구현
동물의 사냥 방식 예제
abstraction
- 기능 계층의 최상위 클래스이다.
- 동물들을 추상화한 클래스 Animal.class
public class Animal { private Hunting_Handler hunting;//implementor public Animal(Hunting_Handler hunting) { this.hunting=hunting; } public void Find_Quarry() { hunting.Find_Quarry(); } public void Detected_Quarry() { hunting.Detected_Quarry(); } public void attack() { hunting.attack(); } public void hunt() { Find_Quarry(); Detected_Quarry(); attack(); } }
refindedAbstraction
- 최상위 클래스 Animal에 기능을 추가한 클래스
- Tiger
public class Tiger extends Animal { public Tiger(Hunting_Handler hunting) { super(hunting); } public void hunt() { System.out.println("호랑이의 사냥방식"); Find_Quarry(); Detected_Quarry(); attack(); } }
- Bird
public class Bird extends Animal { public Bird(Hunting_Handler hunting) { super(hunting); } public void hunt() { System.out.println("새의 사냥방식"); Find_Quarry(); Detected_Quarry(); attack(); } }
implemetor
- 기능을 구현하기 위한 인터페이스
public interface Hunting_Handler { public void Find_Quarry(); public void Detected_Quarry(); public void attack(); }
concreteImplementor
- 구현
public class Hunting_Method1 implements Hunting_Handler { public void Find_Quarry() { System.out.println("물 위에서 찾는다"); } public void Detected_Quarry() { System.out.println("물고기 발견!"); } public void attack() { System.out.println("낚아챈다."); } }
public class Hunting_Method2 implements Hunting_Handler { public void Find_Quarry() { System.out.println("지상에서 찾는다"); } public void Detected_Quarry() { System.out.println("노루 발견"); } public void attack() { System.out.println("물어뜯는다."); } }
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 응용 SW 기초 기술 활용 (0) 2022.10.13 [정보처리기사] 디자인패턴: FlyWeight (java) (0) 2022.10.08 [정보처리기사] 정처기 재수 3일차 : Decorator패턴 (java) (1) 2022.09.26 [정보처리기사] 정처기 재수 1일차 : 요구사항 확인 (0) 2022.09.23