카샤의 만개시기

Adapter 패턴 본문

Foundation/Design Pattern

Adapter 패턴

SKaSha 2019. 10. 27. 10:14

어댑터 패턴은 인터페이스를 변경해서 클라이언트에서 필요로 하는 인터페이스로 적응시키기 위한 용도로 사용됩니다. (호환성)

안드로이드 개발을 할때 어댑터 패턴을 많이 사용하기 때문에 예제를 리스트뷰로 준비하였습니다.
예제의 요구사항은 기존의 ListView를 수직 혹은 평행으로 스크롤이 가능한 리스트뷰로 확장 하는 ListView를 만드는 것입니다.

public class ListView {
    public void printView(String str) {
        System.out.println(str);
    }
}

view를 print하는 기존 기능에 충실한 listview가 있다.

public interface Scroller {
    void scroll();
}

그리고 스크롤 기능을 구현하도록 강제하는 인터페이스를 만들자

public class HorizontalScrollListView extends ListView implements Scroller {
    @Override
    public void scroll() {
        System.out.println("horizontal scroll");
    }
}
public class VerticalScrollListView extends ListView implements Scroller {

    @Override
    public void scroll() {
        System.out.println("vertical scroll");
    }
}

ListView 클래스와 Scroller 인터페이스를 상속받았고,
그로인해 scroll 함수를 구현하였다.

@Test
public void test() {
    listView.printView("list view");
    verticalScrollListView.printView("vertical list view");
    verticalScrollListView.scroll();
    horizontalScrollListView.printView("horizontal list view");
    horizontalScrollListView.scroll();
}

위 test 코드를 호출해보면 결과값은 다음과 같다

list view
vertical list view
vertical scroll
horizontal list view
horizontal scroll

각 컴포넌트들은 ListView를 상속받았기 때문에 printView() 함수를 이용할수 있으며, ScrollView는 scroll() 추상 클래스를 구현하여 scroll 기능을 새로 갖게 되었습니다.

decorator 패턴과 adapter 패턴 차이

https://skasha.tistory.com/68

'Foundation > Design Pattern' 카테고리의 다른 글

Command Pattern  (0) 2019.11.02
Adapter 패턴과 Decorator 패턴의 차이  (0) 2019.10.27
Decorator 패턴  (0) 2019.10.27
Facade Pattern  (0) 2019.10.19
Comments