본문 바로가기

CS(Computer Science)/디자인 패턴

생성 패턴(Creational patterns)

싱글톤(Singleton)

싱글톤 : 클래스에서 하나의 인스턴스만 생성하도록 구현 하는 것

public class singleton {
		
	private static singleton instance;
	
	private singleton() {}
	
	public static singleton getInstance()
	{
		if(instance==null)
		{		
			instance=new singleton();
		}
		
		return instance;
	}
}

- 기본생성자를 private으로 정의 -> 다른 class에서 생성을 못함. 내부에서만 가능

- 외부에서 생성자가 아니라 함수로 생성하게 함, instance없으면 만들어서 반환하고 이미 있으면 그대로 반환

- getInstance함수는 외부에서 인스턴스화 없이 바로 사용해야하니 당연히 publie static, 그리고 static함수 안에서 instance변수 사용해야하니 instace는 private static.

 


Factory Method 패턴

Factory Method : 인스턴스 생성을 만들어주는 클래스를 따로 두는 것.

 ex -  인자,매개변수에 따라 다른 객체(제품)를 생성해 줌

 - 인스턴스 생성에 대해 변경이 있더라도 factory내부에서만 변경하면 됨

 - super class에 create()를 팩토리 패턴으로 만들고 상속받아서 각각의 create종류마다 구현을 함

 - 템플릿 메소드 패턴 활용, 구조와 구현을 분리

 

 


Abstract Factory 패턴

Abstract Factory : 관련 있는 객체의 생성을 가상화 하는 패턴 (factory method에 추상화가 입혀짐)

- abstract class를 상속받아 여러 factory를 건설하는 것

-구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴

  (삼성전자기기라면 -> 삼성전자 모니터 삼성전자 마우스...)

- interface를 상속받아서 공장을 만듬(삼성공장, lg공장)

 

 


Prototype 패턴

Prototype Pattern : 생산 비용이 높은 인스턴스를 복사를 통해서 쉽게 생성 하는 패턴

-cloneable을 상속받으면 복사 가능 , 깊은(값) 복사>

 

 


Builder 패턴

Builder 패턴 : 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴

                  (단계별로 구성하는 데 중점)

 

 

        ->업계에서 말하는 빌더 : 함수마다 자신을 다시 호출해서 단계별로 구성하는 방법 ,,가독성 좋음 

                                     (매개변수 쭉 쓰면 헷갈리지만 builder로 하면 실수할 확률 떨어짐)

                                     (함수 호출하며 자신계속 반환하면 연쇄적으로 호출 가능)

 

 

 

반응형

'CS(Computer Science) > 디자인 패턴' 카테고리의 다른 글

행동 패턴(Behavioral patterns)  (0) 2020.10.22
구조 패턴(Structual patterns)  (0) 2020.09.06