생성 패턴
객체를 생성하고 참조하는 과정을 추상화하여 시스템이 객체의 생성과 조합등에 구애받지 않고 개발될 수 있도록 도와준다. 즉 특정 객체가 생성되고 변경되어도 전체 시스템의 변화는 최소화 되도록 만들어주어, 시스템의 확장이나 유지보수 시 최소비용이 들도록 만들어준다.
1. Factory Method Pattern
- 동적으로 변환되는 객체를 효율적으로 활용하기 위해 상황에 맞는 객체를 반환한다.
팩토리 객체가 리턴하는 객체는 동적으로 변환되는 객체의 조상 객체인데, 실제로는 일반 객체가 조상 객체로
형변환 된 객체이다.
예제)
2. Abstract Factory Pattern
- 동적으로 변환되는 객체들이 그룹으로 이루어져 있을때 팩토리 메소드 객체의 기능을 하는 객체를 한 번 더 추상화해서 추상 팩토리 객체를 만들어 준다. 그런 다음에 팩토리 객체가 반환하는 객체가 하나가 아닌 여러 그룹이 되도록 만든다.
예제)
3. Builder Pattern
- 동적으로 변환되는 객체들이 그룹으로 이루어져 있지만, 이들의 그룹화를 어떻게 진행되어야 할지 모를때 활용하면 좋다. 그리고 생성된 객체 내부에 자기가 활용하고자 하는 객체를 상황에 맞게 포함시킬때도 유용하게 적용할 수 있다.
빌더 객체내에서 필요한 객체를 단계별로 만들어서 필요한 객체들이 모두 생성되도록 만들고, 사용자는 이 그룹을 그냥 활용하면 된다.
4. Prototype Pattern
- 필요한 객체를 어떻게 생성해야 되는지 모를때 생성하고자 하는 객체의 프로토타입을 제공하고, 기존의 데이터나 객체를 이용해 쉽게 해당 객체를 만들 수 있도록 한다. 프로토타입 객체를 만들고, 이 객체속에 데이터를 원하는 형태의 객체로 만들어주는 클론 메소드를 제공해준다. 그리고 사용자들은 클론 메소드에 일반 데이터나 객체를 인수로 넘겨, 원하는 형태의 객체나 작업이 생성되거나 실행되게 한다.
5. Singleton Pattern
- 시스템 속에 특정 객체는 하나만 생성되고 활용되도록 만들고 싶을때 적용하면 된다. 싱글톤 객체가 가진 데이터는 다른 모듈이 변경한 값을 그대로 반영할 수 있다. 그리고 전역변수처럼, 여러 모듈이 효과적으로 활용하는 전역 객체가 된다.
-> 전역변수처럼 활용하고 싶은 전역 객체가 있을때 이 방법을 사용하여 시스템의 유연성을 높일 수 있다.
예제)