본문 바로가기
반응형

Factory constructors 란?

Dart는 하위 유형 또는 null을 반환할 수 있는 Factory constructors 를 지원하는데, 새로운 인스턴스를 생성하지 않는 생성자를 구현할 때 factory 키워드를 사용한다.

어떻게 생성할까?

예제 코드를 보며 확인해보자

class IntegerHolder {
  IntegerHolder(
  );
  
  factory IntegerHolder.fromList(List<int> list) {
    if (list.length == 1) {
      return IntegerSingle(list[0]);
    } else if (list.length == 2) {
      return IntegerDouble(list[0], list[1]);
    } else if (list.length == 3) {
      return IntegerTriple(list[0], list[1], list[2]);
    } else {
      throw Error();
    } 
  }
}

class IntegerSingle extends IntegerHolder {
  final int a;
  IntegerSingle(this.a); 
}

class IntegerDouble extends IntegerHolder {
  final int a;
  final int b;
  IntegerDouble(this.a, this.b); 
}

class IntegerTriple extends IntegerHolder {
  final int a;
  final int b;
  final int c;
  IntegerTriple(this.a, this.b, this.c); 
}

1. 목록에 하나 의 값이 있는 경우 IntegerSingle. 값으로 생성합니다.
2. 목록에 두 개의 값 이 있는 경우 값을 순서대대로 사용하여 IntegerDouble을만듭니다 .
3. 목록에 세 개의 값 이 있는 경우 값을 순서대대로 사용하여 IntegerTriple을만듭니다 .
4. 그렇지 않으면 Error.

 

이렇게 만들어진 내용을 class들에게 return되어 연결된 것을 우린 확인할 수 있다.

반응형