본문 바로가기
728x90
반응형

Programming56

[Design Pattern] Template Method Pattern, 템플릿 메서드 패턴 템플릿 메서드 패턴은 전략 패턴만큼 잘 알려져 있고 자주 사용되는 디자인 패턴의 간판 얼굴인 것 같다. 미리 처리 플로우를 정해 두고 그거에 맞춰서 코딩하게 강제할 수 있기 때문에 SI 에서 사랑받을 것 같은 패턴이다. 예를 들어 컨트롤러가 해야 할 입력값 검증, 비지니스 로직 호출, 응답이라는 일련의 플로우를 템플릿 메서드를 활용해서 추상 클래스로 만들고 그 추상 클래스를 확장하게 할 수 있다. Template Method Pattern 로직을 처리하기 위해 필요한 방법들은 서브 클래스에서 구현하게 추상 메서드로 만들고 그 추상 메서드들을 조합해서 일련의 처리 과정, 알고리즘을 템플릿 메서드로 정의하는 것이 템플릿 메서드 패턴이다. 템플릿의 사전적 의미인 "어떤 것을 만들 때 안내 역할을 하는, 사용상.. 2022. 6. 7.
웹에서 파이썬을? PyScript? PyScript, WebAssembly 웹 브라우저에서 동작하는 언어로서 자바스크립트는 오랜 기간 군림해 왔다. 그렇게 세월이 흘러 웹에서 사용할 수 있는 저수준 언어인 웹어셈블리가 나왔고, C, C++, Rust 등의 언어를 컴파일 하여 웹 브라우저가 이해할 수 있는 저수준 언어인 웹어셈블리 코드를 만들 수 있게 되었다. 현재 웹어셈블리는 웹 표준으로서 자리 잡았고 진화하고 있다. 웹어셈블리 코드를 만들기 위한 파이썬 컴파일 프로젝트인 PyScript 가 아나콘다에 의해 개발되기 시작했고 조만간 상용 프로덕트에서 사용할 정도까지 개발될 것 같다. 그리고 다른 언어들 고, 코틀린, 자바 등도 웹어셈블리 코드를 만드는 컴파일러가 개발되지 않을까. 드디어 자바스크립트 독재자의 시대는 끝이 나는 것일까. Ge.. 2022. 5. 23.
[Design Pattern] Facade Pattern, 파사드 패턴 Facade, 파사드는 프랑스어로 정면, 정면의 벽면 정도로 해석할 수 있는데 건물 외벽에 화려한 영상으로 쇼를 하는 "미디어 파사드"에 쓰는 파사드와 같은 단어이다. 디자인 패턴에서는 입구 정도로 해석하면 되지 않을까. Facade Pattern 비교적 간단한 패턴인 파사드 패턴은 일련의 복잡한 내부 동작들을 하나로 묶어주는 인터페이스를 만드는 패턴이다. 여기서 인터페이스는 자바의 인터페이스가 아니라 무엇인가를 사용하기 위한 수단, 방법이다. 즉 파사드 패턴은 다양한 시스템, 라이브러리, 내부 모듈 등을 구성을 통해 통합해서 기능을 제공하는 것이다. 파사드 클래스는 다양한 객체의 협력을 내부에 감싸서 캡슐화해서 제공하기 때문에 사용하는 객체는 그 내부에서 일어나는 일들을 알지 못한다. Facade Pa.. 2022. 5. 16.
[Hexagonal Architecture #1] 개념, 용어 정리부터 시작 개념과 용어가 헷갈리기 시작하면 핵심에 도달할 수 없기에 우선 개념과 용어부터 정리하려고 한다. 지극히 주관적인 정리가 될 것이기 때문에 잘못된 정보를 전달할 수도 있을 것이다. 헥사고날 아키텍처 DDD 를 잘 표현해 줄 수 있는 아키텍처 중 하나가 헥사고날 아키텍처이다. 포트 - 어댑터 아키텍처라고도 불리는 이 아키텍처의 핵심은 의존성의 방향이 외부로 향하지 않게 관리하여 외부 영역에 의한 도메인 영역의 오염을 막는 것이다. 헥사고날 아키텍처의 전반적인 개념은 아래와 같다. 헥사고날의 가장 중심에는 도메인 영역이 자리한다. 도메인 영역의 바깥쪽에는 도메인을 사용해서 어떠한 요구사항(시나리오, 비지니스 로직)을 충족시키는 애플리케이션 영역이 자리한다. 외부 영역인 웹, 앱에서는 요구사항을 충족시키기 위해.. 2022. 5. 11.
[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.
728x90
반응형