Adapter Pattern
어댑터(Adapter) 패턴 어댑터 패턴은 쉽게 말해 서로 다른 인터페이스를 가진 두 클래스를 연결해주는 패턴이다. 만약 220v용 전자기기를 가지고 110v를 사용하는 나라에 여행을 가면 전압 어댑터를 사용해야한다. 이 때 전압 어댑터는 220v를 110v로 변환해주는 역할을 한다. 즉, 서로 다른 인터페이스이지만 어댑터가 중간에서 같은 인터페...
어댑터(Adapter) 패턴 어댑터 패턴은 쉽게 말해 서로 다른 인터페이스를 가진 두 클래스를 연결해주는 패턴이다. 만약 220v용 전자기기를 가지고 110v를 사용하는 나라에 여행을 가면 전압 어댑터를 사용해야한다. 이 때 전압 어댑터는 220v를 110v로 변환해주는 역할을 한다. 즉, 서로 다른 인터페이스이지만 어댑터가 중간에서 같은 인터페...
프로토타입 패턴 프로토타입은 기존 인스턴스를 복제해 새로운 인스턴스는 방법이다. 만약 기존의 인스턴스를 만들 때 리소스가 많다고 가정해보자. 이 때 매번 새로운 인스턴스를 생성하는 것은 비효율적이다. 이 때 프로토타입 패턴을 사용하면 기존 인스턴스를 복제해 새로운 인스턴스를 생성할 수 있다. 프로토타입 패턴 구조 Prototype I...
빌더 패턴란 빌더 패턴은 복잡한 객체를 단계별로 생성할 수 있도록 돕는 디자인 패턴이다. 빌더 패턴은 특히 생성자가 복잡하거나 객체를 설정할 때 많은 매개변수가 필요한 경우 유용하다. 생성자로 받을 매개변수를 함수로 차곡 차곡 쌓아놓고 마지막에 통합해서 객체를 생성하는 방식이다. 빌더 패턴 구조 Builder: 객체 생성에 필요한 메...
추상 팩터리 패턴 추상 팩토리 패턴은 팩토리 메서드 패턴과 모양과 효과는 비슷하다. 둘 다 구체적인 객체 생성 과정을 추상화한 인터페이스를 제공해 객체 생성의 책임을 팩토리 클래스에 위임한다. 하지만 목적이 다르다. 팩토리 메서드 패턴은 구체적인 객체 생성 과정을 다른 서브(구체)클래스로 위임하는 것이 목적이다. 반면 추상 팩토리 패턴은 연관성...
팩터리 메서드 패턴 팩터리 메서드 패턴은 객체 생성 패턴 중의 하나로, 객체 생성을 특정 서브 클래스에서 결정하도록 하는 패턴이다. 즉, 클라이언트가 직접 객체 생성하는게 아닌 공장 클래스에 위임함으로써 객체 생성의 책임을 분리 할 수 있다. 추가적으로 객체 생성 전 후로 추가적인 로직이 필요한 경우도 팩터리 메서드 패턴을 사용해 효과적으로 처리...
싱글턴 패턴 싱글턴 패턴은 디자인 패턴 중 객체 생성 패턴 중의 하나로, 클래스가 단 하나의 인스턴스만을 갖도록 보장하는 패턴이다. 기존에 미리 만들어둔 인스턴스를 계속 재사용하기 때문에 메모리를 절약할 수 있다. 가장 대표적인 예로는 Spring Framework의 Bean, DB Pool, Logger 등이 있다. 모두 한번 인스턴스를 생성하...
Spring Container란 스프링은 IoC/DI의 개념의 기능을 제공을 위해 컨테이너를 제공한다. 스프링의 컨테이너는 미리 오브젝트를 생성해서 가지고 있다가 필요한 곳에 적절히 주입해준다. 핵심은 컨테이너가 주도적으로 생성, 관계 설정, 제거 등 오브젝트에 대해 제어권을 코드 대신에 가지고 있는 것이다. 이는 IoC와 같기 때문에 IoC Co...
DI (Dependency Injection) DI는 의존성 주입이란 뜻으로 의존성을 인수로 취해 주입 받는 것이다. 직접 의존성을 생성하지 않고 주입 받는 이유는 좋은 객체를 설계하기 위해 객체지향 원칙인 OCP, DIP를 지키기 위해서이다. OCP (Open-Closed Principle) 확장에는 열려있으나 변경에는 닫혀 있어야한다. 다시말...
스프링을 알아보기 전에 간략히 스프링의 역사와 핵심기술들을 살펴보자. 스프링의 탄생 과거 자바 커뮤니티에서는 EJB(Enterprise JavaBeans)라는 기술이 매우 인기 있었다. EJB는 처음에는 개발의 복잡성을 줄이는 혁신적인 솔루션으로 등장했으나, 점차 객체지향의 원칙을 무시하고 특수한 기술 스택에 더 많이 의존하게 되었다. 이로 인해...
Executor Service ExecutorService는 동시성 테스트를 위해 작업을 비동기로 수행해야할 때 주로 사용되는 인터페이스이다. 이미 풀링된 여러 스레드 중 하나를 사용해 작업을 수행한다. 스레드 풀 스레드 풀은 미리 생성된 스레드의 집합으로 사용자가 쉽게 여러 스레드를 관리할 수 있다. DB ConnectionPool과 마...