비트캠프 프론트엔드 및 벡엔드 개발자 디자인 패턴 & 알고리즘
#디자인 패턴(Design_pattern)
# Factory_method // 인스턴스 생성과정이 복잡할 때 사용하는 설계 기법
기존에는 new로 인스턴스 생성 후, 값을 넣어 사용했다면,
switch문 등을 이용하여 자주 사용되는 인스턴스들을 값에 해당하는 셋팅을 하게끔 만든다.
1) 객체 생성 class 정의 // Factory_method 적용 전과 동일
class Car2 {
String model;
int cc;
boolean sunroof;
}
2) 인스턴스를 생성해주는 메서드를 정의
public static Car2 create(String product) {
Car2 c = new Car2();
switch (product) {
case "tc":
c.model = "티코";
c.cc = 890;
c.sunroof = false;
break;
case "tcg":
c.model = "티코 골드";
c.cc = 890;
c.sunroof = true;
break;
default:
return null;
}
return c;
}
}
3. 객체 생성 후 필요 값 입력 // Switch문으로 바로 "tc", "tcg"에 맞는 인스턴스 기본 셋팅 가능
Car2 c1 = Car2Factory.create("tc");
Car2 c2 = Car2Factory.create("tcg");
# Iterator(이터레이터) // 값을 꺼낼때 일관된 방식으로 하게끔 하는 설계 기법
# Observer
# Singleton(싱글톤) // 객체를 하나만 생성하게끔 강제하는 설계 기법
1) 인스턴스 주소를 보관할 클래스 필드를 선언한다. (private static A instance)
2) 생성자를 정의하고 private으로 선언하여 비공개로 만들어라. (private A())
// => 비공개 생성자를 외부에서 호출할 수 없다.
// => 오직 내부에서만 호출할 수 있다.
3) 인스턴스를 생성해주는 메서드를 static으로 정의한다.
public static 클래스명 getInstance() {
if (A.instance == null) {
// 아직 인스턴스를 생성한 적이 없다면 즉시 인스턴스를 생성한다.
A.instance = new A();
}
// 기존에 변수에 저장된 인스턴스 주소를 리턴한다.
return A.instance;
}
# 알고리즘(algorithm.data_structure)
#ArrayList -> #Project v19_1
#LinkedList -> #Project v20
#Queue -> #Project v22
#Stack -> #Project v21