다이어그램 그리기 https://1ilsang.blog.me/221104669002
[생성패턴]
[1].싱글톤 패턴(singleton)
=어떤 클래스가 오직 하나의 객체만을 갖도록 하며, 프로그램 전반에 걸쳐 그객체 하나만 사용되도록 보장해야한다.
-정확히 하나만 생성되어야 하는 전역객체(global object)를 구현해야 하는 경우에 특히 유용하다.
<예 >
public class Restaurant{
private static Restaurant _instance=null;
protected Restaurant() { . . . }
public static Restaurant getInstance() {
if(_instance==null){
_instance = new Restaurant();
}
return _instance;
}
}
많은 사람들이 싱글톤 디자인 패턴을 좋아하지 않고 심지어 '안티-패턴' 이라고 부르기도 한다.
싱글톤을 싫어하는 이유 중 하나는 싱글톤이 단위 테스트(unit test)에 방해 되는 요인이기 때문이다.
[2].팩터리메서드(factory method)
=어떤 클래스의 객체를 생성하기 위한 인터페이스를 제공하되, 하위 클래스에서 어떤 클래스를 생성할지 결정할 수 있도록 도와준다.
-이를 구현하는 방법
1). Factory 메소드 자체에 대한 구현은 제공하지 않고 객체 생성 클래스를 abstract 로 선언하고 놔두는 것
2). Factory 메서드를 실제로 구현한 creator 클래스를 만드는 것이다. 이 경우에는 Factory 메서드에 생성해야 할 클래스를 인자로 넘겨줘 야 한다.
< 예 >
public class CardGame {
public static CardGame createCardGame (GameType type) {
if(type == GameType.Poker) {
return new PokerGame();
} else if ( type == GameType.BlackJack) {
return new BlackJackGame();
}
return null;
}
}
출처 : 코딩인터뷰 189가지 프로그래밍 문제와 해법 완전분석 (프로그래밍 인사이트 )
[3].추상팩토리패턴(Abstract Factory)
=객체를 생성할 때 객체를 구성하는 부분을 추상화하여 여러 서브클래스가 상속을 통해 구현하여 구성하는 부분을 동일하게 유지하는 방법
-구현법:
실제 만들어지는 객체는 각각의 하위 클래스에 해당하는 것이어도 client 가 참조하는 자료형은 상위의 추상클래스임을 의미
<패턴이 유용한 경우>
1).추상 팩토리 클래스 패턴은 기존 팩토리 패턴의 if-else 로직에서 벗어날 수 있게 해준다.
2).여러 제품군 중 사용할 제품군을 쉽게 선택할 수 있도록 만들고 싶을때
3). 추상 팩토리 클래스 패턴은 확장에 매우 용의한 패턴으로 쉽게 다른 서브 클래스들을 확장할 수 있다.
<장점>
클래스의 객체가 생성되는 부분만 변경시켜주면 얼마든지 다른 제품군을 생성하도록 바꿀 수 있다.
출처:http://leetaehoon.tistory.com/58?category=212584<-이동해서 소스보기
[4].빌더 패턴(Builder)
=복잡한 객체의 생성을 표현으로 부터 분리시키는 것
출처:http://leetaehoon.tistory.com/57?category=212584
[1].옵저버 패턴 https://1ilsang.blog.me/221104669002
[2].반복자 패턴 http://supercoding.tistory.com/33