Louie NRT Story

[디자인패턴] 어댑터(Adapter) 본문

전기차충전기

[디자인패턴] 어댑터(Adapter)

hyeok0724.kim@gmail.com 2022. 6. 14. 10:05
반응형

작성일: 22년 6월 14일

 

Contents

1. 배경

2. FindAlgorithm 코드

3. SearchStrategy 코드

4. SearchButton 코드

5. MyProgram 코드

 

 

1. 배경

 - 기존의 검색모드에 따라 SearchButton을 누르면 검색이 되는 프로젝트에서 다른 회사에서 작성한 FindAlgorithm 코드가 추가됨

 - 작성된 코드를 수정하지 않고 그대로 사용하기 위해서 어댑터를 개발하게 됨

 

2. FindAlgorithm 코드

public interface FindAlgorithm {
    public void find (boolean global);
}

class FindMovieAlgorithm implements FindAlgorithm {
    public void find (boolean global){
        System.out.println("find movie" + (global ? " globally" : ""));
    }
}

 

 

3. SearchStrategy 코드

interface SearchStrategy {
    public void search();
}

class SearchStrategyAll implements SearchStrategy {
    public void search(){
        System.out.println("SEARCH ALL");
    }
}

class SearchStrstegyImage implements SearchStrategy {
    public void search() {
        System.out.println("SEARCH IMAGE");
    }
}

class SearchStrategyNews implements SearchStrategy {
    public void search() {
        System.out.println("SEARCH NEWS");
    }
}

class SearchStrategyMap implements SearchStrategy {
    public void search() {
        System.out.println("SEARCH MAP");
    }
}

class SearchFindAdapter implements SearchStrategy {
    private FindAlgorithm findAlgorithm;

    public SearchFindAdapter (FindAlgorithm _findAlgorithm) {
        findAlgorithm = _findAlgorithm;
    }
    public void search() {
        findAlgorithm.find(true);
    }
}

 

 

4. SearchButton 코드

public class SearchButton {
    private MyProgram myProgram;

    public SearchButton(MyProgram _myProgram){
        myProgram = _myProgram;
    }

    private SearchStrategy searchStrategy = new SearchStrategyAll();

    public void setSearchStrategy(SearchStrategy _searchStrategy) {
        searchStrategy = _searchStrategy;
    }

    public void onClick(){
        searchStrategy.search();
    }
}

 

 

5. MyProgram 코드

public class MyProgram {

    private SearchButton searchButton  = new SearchButton(this);

    public void setModeAll(){
        searchButton.setSearchStrategy(new SearchStrategyAll());
    }

    public void setModeImage() {
        searchButton.setSearchStrategy(new SearchStrstegyImage());
    }

    public void setModeNews() {
        searchButton.setSearchStrategy(new SearchStrategyNews());
    }

    public void setModeMap(){
        searchButton.setSearchStrategy(new SearchStrategyMap());
    }

    public void setModeMovie() {
        searchButton.setSearchStrategy(new SearchFindAdapter(new FindMovieAlgorithm()));
    }

    public void testProgram(){
        searchButton.onClick();
        setModeImage();
        searchButton.onClick();
        setModeNews();
        searchButton.onClick();
        setModeMap();
        searchButton.onClick();
        setModeMovie();
        searchButton.onClick();
    }
}

 

 

Referece:

https://youtu.be/lJES5TQTTWE

 

반응형
Comments