플러터 곳곳에서 FACTORY를 만날수 있고, 여러 강좌에서 FACTORY에 대한 설명을 볼수 있다.
낯은 익지만, 정확한 용법은 비전공자에게 납득이 어려운 부분이 있다.
지나치다가 본, 글에 그나마 설명이 잘된게 있어서, 메모해둔다.
abstract class Number {
factory Number(String type) {
if (type == 'myNum1') return MyClass1(1);
if (type == 'myNum2') return MyClass2(4);
throw 'Can\'t create $type';
}
num get myNumber;
}
class MyClass1 implements Number {
final num _number;
MyClass1(this._number);
num get myNumber => _number;
}
class MyClass2 implements Number {
final num _number;
MyClass2(this._number);
num get myNumber => _number;
}
main(List<String> args) {
var num1 = Number('myNum1');
var num2 = Number('myNum2');
print(num1.myNumber);
print(num2.myNumber);
}
// or.. 함수로 구현시..
// Number numberFactory(String type) {
// if (type == 'myNum1') return MyClass1(2);
// if (type == 'myNum2') return MyClass2(2);
// throw 'Can\'t create $type';
// }