본문 바로가기
728x90
반응형

Programming/OOP12

[Design Pattern] Template Method Pattern, 템플릿 메서드 패턴 템플릿 메서드 패턴은 전략 패턴만큼 잘 알려져 있고 자주 사용되는 디자인 패턴의 간판 얼굴인 것 같다. 미리 처리 플로우를 정해 두고 그거에 맞춰서 코딩하게 강제할 수 있기 때문에 SI 에서 사랑받을 것 같은 패턴이다. 예를 들어 컨트롤러가 해야 할 입력값 검증, 비지니스 로직 호출, 응답이라는 일련의 플로우를 템플릿 메서드를 활용해서 추상 클래스로 만들고 그 추상 클래스를 확장하게 할 수 있다. Template Method Pattern 로직을 처리하기 위해 필요한 방법들은 서브 클래스에서 구현하게 추상 메서드로 만들고 그 추상 메서드들을 조합해서 일련의 처리 과정, 알고리즘을 템플릿 메서드로 정의하는 것이 템플릿 메서드 패턴이다. 템플릿의 사전적 의미인 "어떤 것을 만들 때 안내 역할을 하는, 사용상.. 2022. 6. 7.
[Design Pattern] Facade Pattern, 파사드 패턴 Facade, 파사드는 프랑스어로 정면, 정면의 벽면 정도로 해석할 수 있는데 건물 외벽에 화려한 영상으로 쇼를 하는 "미디어 파사드"에 쓰는 파사드와 같은 단어이다. 디자인 패턴에서는 입구 정도로 해석하면 되지 않을까. Facade Pattern 비교적 간단한 패턴인 파사드 패턴은 일련의 복잡한 내부 동작들을 하나로 묶어주는 인터페이스를 만드는 패턴이다. 여기서 인터페이스는 자바의 인터페이스가 아니라 무엇인가를 사용하기 위한 수단, 방법이다. 즉 파사드 패턴은 다양한 시스템, 라이브러리, 내부 모듈 등을 구성을 통해 통합해서 기능을 제공하는 것이다. 파사드 클래스는 다양한 객체의 협력을 내부에 감싸서 캡슐화해서 제공하기 때문에 사용하는 객체는 그 내부에서 일어나는 일들을 알지 못한다. Facade Pa.. 2022. 5. 16.
[Design Pattern] Adapter Pattern, 어댑터패턴 어댑터 패턴은 스파이의 냄새가 나는 패턴이다. 본래의 모습을 숨기고 다른 모습으로 살아가는 스파이. 어떤 라이브러리를 수정해서 사용하거나, 새로운 기능을 추가하고 싶지만 그 라이브러리를 수정하기 힘든 상황에 사용할 수 있는데, 수정하고 싶은 라이브러리를 감싸서 새로운 인터페이스를 정의해서 사용한다. 어댑터 패턴은 클래스 어댑터 패턴, 객체 어댑터 패턴이 있는데, 클래스 어댑터 패턴은 다중 상속을 해야 하기 때문에 마음에 들지 않는다. 자바에서는 클래스의 다중 상속을 지원하지 않지만 인터페이스의 다중 상속은 허용하기 때문에 구현은 가능하다. 코드 양이 늘어나는 단점이 있지만 구성을 사용하는 객체 어댑터 패턴이 더 올바르다고 생각한다. Adapter Pattern 어댑터 패턴의 등장인물은 다음과 같이 4명이.. 2022. 5. 9.
[Design Pattern] Command Pattern, 커맨드 패턴 커맨드 패턴 하면 서블릿 / JSP 시절 컨트롤러 만들 때 컨트롤러를 다 커맨드로 만들고 프론트 컨트롤러에서 분기 처리하던 생각이 난다. interface Command { excute(); } class GetUserController implements Command { excute() {... userService.get()...} } class FrontController extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) { final String uri = request.getURI() final String method = request.getMethod() if (.. 2022. 5. 6.
[Design Pattern] Singleton Pattern, 싱글톤 패턴 말도 많고 탈도 많은 패턴계의 뜨거운 감자 싱글톤 패턴. 개인적으로 디자인 패턴이라기보다 코딩 기법이라고 생각한다. 애플리케이션 전체적으로 단 하나의 인스턴스를 사용하기 위해 사용되는 코딩 기법. 싱글톤이 늘 논의가 되는 곳은 자바 세상이기도 하고 각 언어마다 멀티스레드 환경을 제어하는 방법이 다르기는 하지만 자바, 코틀린, 고, 타입스크립트에서 어떻게 구현하는지 알아보자. 자바에서 일반적으로 알려진 싱글톤 코딩 기법이 왜 멀티스레드에서 깨지는지 등의 논의는 접어두고 각 언어마다 내 마음에 든 기법을 하나씩 소개하려고 한다. Java Singleton Pattern 멀티 스레드를 락으로 동기화하는 synchronized, 캐시가 아닌 항상 메인 메모리에서 인스턴스를 가져오는 volatile 등이 필요 없.. 2022. 5. 2.
[Design Pattern] Abstract Factory Pattern, 추상 팩토리 패턴 팩토리 메서드 패턴이 제품을 생산하기 위한 것이라면 추상 팩토리 패턴은 제품을 구성하는 부품? 재료? 를 생산하기 위한 것이다. [Design Pattern] Factory Method Pattern, 팩토리 메서드 패턴 DIP(Dependency Inversion Principle), 의존성 역전 원칙 변경에 강한 설계를 하기 위한 방법 중 잘 알려진 SOLID 원칙의 하나로 의존 흐름을 역전시키는 방법으로, 육각형 아키텍처의 포트-어댑터도 이 방법 tinkerbellbass.tistory.com Abstract Factory Pattern 제품을 구성하는 부품들 중 연관이 있는 것을 묶어 생산하는 것이 추상 팩토리 패턴의 핵심이다. 구체적으로는 제품을 구성하는 부품을 만드는 인터페이스를 정의하고 그 .. 2022. 4. 29.
728x90
반응형