Free Lines Arrow
본문 바로가기
728x90

분류 전체보기379

[Design Pattern] Adapter Pattern Adapter pattern 어댑터 패턴은 호환성이 없는 인터페이스 때문에 동작할수 없는 클래스들이 함께 동작하게 해준다. 아래 그림을 보면 제공된 라이브러리가 호환이 안될경우 어댑터 패턴을 사용하면된다. Adapter pattern 구조 가장 널리 알려진 Adapter의 구조이다. Client: 실제 기능을 사용하는 주체 Target: Adapter pattern 예제 MathAdapter 를 인터페이스로 만든다. MathAdapterImpl 로 구현한뒤 Math 를 가져다 사용한다. 이렇게 하는 이유는 다음과 같다. - 제공 되는 Math 는 입출력 타입이 double 이다. - 하지만 입력을 float 을 사용해야 된다. 현재는 간단하지만 로직이 복잡해 지면 어댑터를 사용해야 될수 밖에 없다. Sp.. 2021. 10. 28.
[Design Pattern] Strategy Pattern Strategy Pattern 이란? 실행 중에 알고리즘을 선택할수 있게 해주는 패턴이다. 유연하고 재사용 가능한 객체 지향 소프트웨어를 설계하기 위해 반복되는 디자인 문제를 해결하는 방법이다. 다형성을 잘 이해해야 된다. 각 알고리즘을 캡슐화 한다. - 알고리즘들은 해당 계열 안에서 상호 교체가 가능하게 만든다. Strategy Pattern 장점 여러개의 재사용이 가능하다. - 인터페이스와 구현체를 나누면 동일한 기능을 상황에 맞게 구현할수 있다. 기존코드를 변경할 필요 없이 새로운 전략을 만들수 있다. Strategy Pattern 구조 Strategy 를 Interface 로 만든다. 구현체 class 를 원하는 만큼 구현한다. Context 에서 사용할때는 alogorithm 만 호출하면 된다... 2021. 10. 28.
[Spring] 프론트 컨트롤러 4 : 개선편 프론트 컨트롤러 4 앞서 만들어 둔 프론트컨트롤러를 개선한다. 개선방안 우리는 앞에 프로젝트에서 모델뷰를 만들었다. 이번에는 모델뷰를 제거한다. 대신 컨트롤러에 Map 을 넘겨 필요한 데이터를 저장한다. Controller interface 모델 뷰가 없어지고 파라미터들이 Map 으로 변경되었다. package hello.servlet.web.frontcontroller.v4; import java.util.Map; public interface ControllerV4 { /** * * @param paramMap * @param model * @return viewName */ String process(Map paramMap, Map model); } FrontContorller Map 으로 mode.. 2021. 10. 26.
[Spring] 프론트 컨트롤러 3 : 종속성제거, 뷰리졸버 구현 프론트 컨트롤러 종속성제거, 뷰리졸버 구현 이전에 반복되는 코드들을 줄인다. 프론트컨트롤러에 많은 역할을 주고 일반 컨트롤러에서는 종속성을 제거한다. 서블릿 종속성을 제거한다. 컨트롤러 입장에서 HttpServletRequest, HttpServletResponse 가 꼭 필요하진 않다. 그렇다면 requset 에서 model을 가져다 썼는데 어떻게 해결할까? - 직접 만들어서 사용한다. 종속성을 제거의 장점 불필요한 코드 request, response 를 줄일수 있다. 만약 파일의 경로가 변경되면 프론트컨트롤러 만 손보면 된다. 유지보수가 간편해 진다. 뷰이름 중복제거 컨트롤러마다 뷰이름이 계속해서 등장하고 절대경로를 사용한다. 상대경로로 변경하여 구현한다. /WEB-INF/views/new-form.. 2021. 10. 23.
728x90
반응형