전기차충전기
[디자인패턴] 어댑터(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:
반응형