[Dart]factory와 디자인패턴

heath·2024년 3월 26일
Hero({
required this. name,
required int hp, 
this. sword,
}) : _hp = hp t
// print('1. Hero 생성자') ;
}
// factory 기워드를 붙인다
// named 생성자 가능 (이름 없는 생성자 가능하지만 전체 · 1개만 • 가능)
factory Hero. fromJson (Map<String, dynamic> json) t
// 인스턴스 생성 후  리턴
return Hero(name: json[ 'name'], hp: json['hp']);
}

생성자 공식문서 에 있는 예시는 보지 말것!

생성자를 재활용 가능하기 때문에 예시문제로만 본다면, 오해에 소지가 다분하다.

Factory 패턴
공장 : 물건을 만드는 곳
factory 패턴 : 인스턴스를 만드는 패턴

트럭 벤 세단 처럼 공장에서 다양하게 만들어 낼 수 있음

Singleton 패턴
1개의 인스턴스만 생성되는 것을 보증하기 위한 패턴
인스턴스 생성을 여러번 시도해도 1개의 인스턴스가 공유
캐시나 공유 데이터, 처리의 효율화 등에 사용되는 테크닉

class RentCar {// static 인스턴스를 미리 생성
static final RentCar _instance = RentCar._internal();
int _count = 0;
// factory 생성자
factory RentCar() {
return _instance;
}
// 내부에서만 사용할 named 생성자. (기본 생성자 금지 효과)
RentCar._internal();
int increment) {
return ++_count;void main() {
final instance1 = RentCar();
final instance2 = RentCar);
print(instance1 == instance2);      // true


profile
정해진대로 살면 그게 정말 행복일까?

0개의 댓글