디자인 패턴
-
[GoF] 빌더 패턴(Builder Pattern)Gof Design Pattern 2021. 12. 3. 13:30
빌더 패턴(Builder Pattern) 빌더 패턴이란? 복잡한 객체를 생성하는 클래스와 구현하는 클래스를 분리하여, 동일한 생성 과정에서도 서로 다른 결과물이 나올 수 있도록 방법을 제공합니다. 사용자는 Builder에서 제공하는 메서드를 사용하여 (구현)결과물을 얻을 수 있습니다. 빌더 패턴 왜 사용할까? 객체를 생성할 때 생성 과정과 구현 방법을 분리함으로써 동일한 객체를 생성에서 과정에서 여러 다른 표현이 나올 수 있다. 빌더 패턴을 사용하게 되면 생성과 구현을 분리할 수 있다. 구현을 다양하게 할 수 있다. 복잡한 객체를 생성하는 절차를 세밀하게 나눌 수 있다. 사용자는 구체적인 사항을 알 필요가 없다. 클래스 다이어그램 객체 협력 Builder Product의 각 요소들을 생성하는데 필요한 추..
-
[GoF] 추상 팩토리 , Abstract FactoryGof Design Pattern 2021. 9. 6. 16:27
추상 팩토리 , Abstract Factory 추상 팩토리 패턴이란? 서로 연관이 있는 객체들을 묶어서 팩토리 클래스로 만들고, 이를 팩토리 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴. 즉, 여러 제품군을 한꺼번에 생성하는 패턴이다. 추상 팩토리 패턴 왜 사용할까? 구체적인 클래스를 생성하지 않고도 서로 연관된 여러 객체의 군(cluster)를 생성하기 위한 인터페이스를 제공하기 위해 사용합니다. 예를 들어 DB 종류에 따라 DAO 클래스가 달라져야 한다고 할 때, 현재 사용해야 하는 DB의 종류에 따라 DAO 인스턴스를 한꺼번에 생성하도록 할 수 있습니다. 객체가 생성되고 구성되고 표현되는 방식과 상관 없이 시스템을 독립적으로 만들 수 있습니다. 하나 이상의 제품군들 중 하나를..
-
[GoF] 프로토타입 패턴, Prototype patternGof Design Pattern 2021. 9. 3. 15:20
프로토타입 패턴, Prototype pattern 프로토타입 패턴이란? 생성할 객체들의 타입이 프로토타입인 인스턴스로부터 결정되도록 하며, 인스턴스는 새 객체를 만들기 위해 자신을 복제하는 패턴을 말한다. 프로토타입 패턴 왜 사용할까? 정의한 클래스의 인스턴스 생성과정이 복잡하거나 여러 조합에 의해 생성이 되어야하는 경우가 있습니다. 예를 들어, 객체를 생성해서 DB로부터 데이터를 가져와야하는 경우가 있습니다. 그렇다면 매번 객체를 생성할때마다 DB 트랜잭션이 발생하게 되는데 이는 꽤나 많은 비용을 소모하는 행위입니다. 이 때 하나의 프로토타입을 만들어 초기화해두고 이를 복제해서 사용 및 수정하면 비용을 많이 아낄 수 있습니다. 프로토타입 패턴 을 사용하게 되면 프로토타입 속성값을 활용한 객체 생성을 할..
-
[GoF] 싱글톤 패턴, Singleton patternGof Design Pattern 2021. 9. 2. 14:30
싱글톤 패턴, Singleton pattern 싱글톤 패턴이란? 싱글톤 패턴은 객체가 오직 1개만 생성되야 하는 경우에 사용되는 패턴입니다. 싱글톤은 클래스의 인스턴스는 오직 하나임을 보장하며 이 인스턴스에 접근할 수 있는 방법을 제공합니다. 싱글톤 왜 사용할까? 예를들어, JDBC의 커넥션을 관리하는 커넥션 풀은 객체가 여러 개 생성되면 설정 값이 변경될 위험이 생길 수 있습니다! 클래스에서 만들 수 있는 객체를 오직 하나로 만들어서 이에 대한 접근을 하나로 통일하여 제공한다. 자바에서는 CPP와 달리 전역 변수가 존재하지 않으므로 객체가 하나만 존재하도록 설계하고 접근 메서드를 제공한다. 싱글톤을 사용하게 되면 유일하게 존재하는 객체로의 접근을 통제 할 수 있다. 전역 변수를 사용함으로써 발생되는 문..