목록Programing & Coding (86)
S E P H ' S
싱글톤 컨테이너(Singleton Container) 싱글톤 컨테이너란 클래스의 인스턴스가 Java JVM 내에 단 하나만 존재하는 것을 의미한다. 웹 애플리케이션은 수많은 클라이언트에서 서비스를 요청받게 되는데 만약 서버에서 클라이언트의 요청을 받을때마다 클래스 인스턴스를 생성하게 되면 JVM 메모리 사용량이 증가하게 되고 서버 부하가 발생할 것이다. 예제로 함께 확인해보자. 예제는 Spring 프로젝트가 아닌 일반 Java 프로젝트로 만들어져있다. Java 프로젝트로 만들어져 있다고 해서 잘못된 것이 아닌가? 하는 것이 아니라 Spring에서 어떻게 싱글톤을 쓰는지에 초점을 두고 감안하여 읽으면 좋을 듯 하다. 먼저 AppConfig.java 에서 MemberService를 빈으로 등록했고 Membe..
프로토타입 패턴은 객체를 생성하는 데 시간과 노력이 많이 들고, 이미 유사한 객체가 존재하는 경우에 사용된다. 그리고 java의 clone()을 이용하기 때문에 생성하고자 하는 객체에 clone에 대한 Override를 요구한다. 이때 주의할 점은 반드시 생성하고자 하는 객체의 클래스에서 clone()이 정의되어야 한다는 것이다. 예를 들어 DB로부터 데이터를 가져오는 객체가 존재한다고 가정해보자. 만약 DB로부터 가져온 데이터를 우리의 프로그램에서 수차례 수정을 해야하는 요구사항이 있는 경우, 매번 new 라는 키워드를 통해 객체를 생성하여 DB로부터 항상 모든 데이터를 가져오는 것은 좋은 아이디어가 아니다. DB로 접근해서 데이터를 가져오는 행위는 비용이 크기 때문이다. 따라서 한 번 DB에 접근하여..
빌더(Builder) 패턴 빌더 패턴은 많은 Optional한 멤버 변수(혹은 파라미터)나 지속성 없는 상태 값들에 대해 처리해야 하는 문제들을 해결한다. 예를 들어, 추상 팩토리 패턴이나 팩토리 패턴에서는 생성해야 하는 클래스에 대한 속성 값이 많을 때 아래와 같은 이슈가 있다. 클라이언트 프로그램으로부터 팩토리 클래스로 많은 파라미터를 넘겨줄 때 타입, 순서 등에 대한 관리가 어려워져 에러 발생 확률이 높아짐 경우에 따라 필요 없는 파라미터들에 대해 팩토리 클래스에 일일이 null 값을 넘겨 줘야 한다. 생성해야 하는 서브 클래스가 무거워 지고 복잡해짐에 따라 팩토리 클래스 또한 복잡해진다. 빌더 패턴은 이러한 문제들을 해결하기 위해 별도의 Builder 클래스를 만들어 필수 값에 대해서는 생성자를 ..
추상 팩토리(Abstract Factory) 패턴 팩토리 메소드 패턴에서는 하나의 팩토리 클래스가 인풋으로 들어오는 값에 따라 if-else, switch문을 사용하여 다양한 서브 클래스를 리턴하는 식으로 구현했다. 추상 팩토리 패턴에서는 팩토리 클래스에서 서브 클래스를 생성하는 데 있어 if-else 문을 걷어낸다. 추상 팩토리 패턴은 인풋으로 서브 클래스에 대한 식별 데이터를 받는 것이 아닌 또 하나의 팩토리 클래스를 받는다. Super Class public abstract class Computer { public abstract String getRAM(); public abstract String getHDD(); public abstract String getCPU(); @Override p..