일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- IOT Core
- 홈어시스턴트
- 충전기
- 안드로이드
- 펌웨어
- 라즈베리파이
- raspberry
- OCPP
- homeassistant
- flask
- lambda
- AWS
- 완속충전기
- 파이썬
- 보안
- Android
- STM32
- 디자인패턴
- 플라스크
- 서버리스
- 에버온
- everon
- 전기차충전
- 급속충전기
- 전기차
- esp8266
- thread
- 전기차충전기
- dynamodb
- YMODEM
Archives
- Today
- Total
Louie NRT Story
[디자인패턴] 어댑터(Adapter) 본문
반응형
작성일: 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:
반응형
'전기차충전기' 카테고리의 다른 글
[에너지교육] ESS설치와 운영 (0) | 2022.07.21 |
---|---|
[전기차 충전기] 에버온 충전기 연구 및 제조 (0) | 2022.06.29 |
[개발툴] Miro - Best Online Whiteboard Tool - Todo (0) | 2022.06.13 |
[에버온] 스마트 전력분배 10kW 멀티충전기 (0) | 2022.06.13 |
[원격제어] 프로그램 사용 후기 - Todo (0) | 2022.05.30 |
Comments