ABOUT ME

Today
Yesterday
Total
  • [정보처리기사] 정처기 재수 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("물어뜯는다.");
        }
    }
    

    댓글

Designed by Tistory.