디자인 패턴 총정리
·
개발
디자인 패턴이란? 디자인 패턴 : 소프트웨어 설계 과정에서 자주 발생하는 문제들에 대한 설계 방법론 디자인 패턴 개발 과정에서 반복되는 문제들을 대비한 모범 해결 사례라고 할 수 있다.디자인 패턴은 개발자들에게 문제 상황을 해결하는 원리를 알려준다. 디자인 패턴을 통해 얻을 수 있는 이점은 다음과 같다.재사용성 : 반복적인 문제에 대한 일반적인 해결책을 제시해준다.가독성 : 코드가 일정한 구조로 명확하게 정리된다.유지보수성 : 코드를 쉽게 모듈화할 수 있게 해준다.확장성 : 기존 코드를 변경하지 않고 새로운 기능을 구현할 수 있다.안정성, 신뢰성 : 검증된 솔루션을 제공한다.업무 효율성 : 팀원과의 소통을 효율적으로 할 수 있게 해준다. 디자인 패턴의 종류는 다음과 같다.생성 패턴 : 기존 코드의 재활용..
[ 디자인 패턴: 생성 ] (5) 프로토타입 (Prototype)
·
개발
프로토타입 : 기존 객체를 복사하여 새로운 객체를 생성하는 디자인 패턴 객체 생성을 위한 복잡한 과정을 간소화하고, 기존 객체와 유사한 객체를 생성하는 시간과 비용을 줄일 수 있다. 예제 public class Employee implements Cloneable{ private Long id; private String name; public Employees(Long id, String name) { this.id = id; this.name = name; } @Override public Object clone() throws CloneNotSupportedException { return new Employee(this.i..
[ 디자인 패턴: 생성 ] (4) 빌더 (Builder)
·
개발
빌더 : 복잡한 객체들을 단계별로 생성할 수 있도록 하는 디자인 패턴 점층적 생성자 패턴다양한 매개변수를 입력받을 수 있도록 생성자를 오버로딩하는 방식그러나, 객체를 생성하기 위해 일반적인 생성자를 사용하면, 매개변수의 종류가 많을수록 가독성이 떨어지고 각 인자가 무엇을 의미하는지 파악하기 어려워진다.자바 빈 패턴매개변수가 없는 생성자로 객체를 생성하고, setter를 통해 필드의 초기값을 설정하는 방식점층적 생성자 패턴에 비해 가독성이 좋고, 유연적으로 객체를 생성할 수 있다.그러나, 객체의 일관성 문제와 불변성 문제가 발생한다.일관성 문제 : 개발자가 깜빡하고 setter 사용을 깜빡하면, 유효하지 않은 객체가 되어버림불변성 문제 : setter의 노출로 인해, 언제 어디서나 함부로 객체의 필드 값을..
[ 디자인 패턴: 생성 ] (3) 싱글톤 (Singleton)
·
개발
싱글톤 : 클래스를 구현한 객체가 하나만 있도록 하면서, 해당 인스턴스에 대한 전역 접근 지점을 제공하는 디자인 패턴즉, 클래스에 대한 단 하나의 유일한 객체만을 유지하기 위해 존재한다.어떤 클래스의 인스턴스가 필요하면 인스턴스를 새로 만드는 거싱 아닌, 기존의 인스턴스를 가져와 활용한다.전역 변수 역할을 하는 인스턴스라고 생각하면 된다. 리소스를 많이 차지하지만 하나의 객체만 돌려쓰면 되는 클래스에 싱글톤 패턴을 적용할 수 있다.예를 들어, 다음과 같은 경우가 있다.데이터베이스 연결 모듈디스크 연결 객체네트워크 통신 객체DBCP 커넥션풀스레드풀로그 기록 객체위와 같은 객체들은 새로 만들어서 사용할 일이 없는 애플리케이션에서 유일해야 하는 객체이다. public class Main{ public s..
[ 디자인 패턴: 생성 ] (2) 추상 팩토리 (Abstract Factory)
·
개발
추상 팩토리 : 연관성이 있는 객체들을 묶어서 추상화하고, 구체적인 상황이 주어지면 객체를 구현화하는 디자인 패턴클라이언트에서 특정 객체를 사용할 때, 팩토리 클래스만 참조하도록 하여 객체에 대한 역할과 구현을 분리할 수 있다.  언뜻 보면 팩토리 메서드와 동일하다고 생각할 수 있다.둘 다 객체 생성 과정을 추상화한 공장 역할의 인터페이스를 제공하며, 객체 생성을 캡슐화함으로써 구체적인 타입을 감추고 느슨한 결합 구조를 띠게 하기 때문이다.그러나, 팩토리 메서드와 추상 팩토리는 다음과 같은 차이점이 있다.팩토리 메서드한 팩토리 당 한 종류의 객체 생성을 지원한다.추상 팩토리한 팩토리에서 연관된 여러 종류의 객체 생성을 지원한다.즉, 팩토리 메서드는 클라이언트가 공장을 통해 제품을 생성하게 하는 것이 주된..
[ 디자인 패턴: 생성 ] (1) 팩토리 메서드 (Factory method)
·
개발
팩토리 메서드 : 부모 클래스에서 객체를 생성할 수 있는 인터페이스를 제공하고, 자식 클래스들은 생성 객체의 유형을 변경할 수 있도록 하는 생성 디자인 패턴클라이언트에서 직접 new 연산자로 제품 객체를 생성하는 것이 아닌, 공장 클래스가 제품 객체들을 도맡아 생성한다.서브 공장 클래스는 이를 상속하여 각각의 제품 객체 생성을 책임진다. 예제 1 interface Product { void setting();}class ProductA implements Product { public void setting() {}}class ProductB implements Product { public void setting() {}} 위와 같은 제품 인터페이스와 제품 구현체가 있다고 해보자.이제 ..