개발/Flutter
Flutter Named Constructor, Factory Constructor
dev_caleb
2023. 4. 25. 00:03
728x90
Flutter에서,
기본적으로 사용하는 Constructor말고, 이름을 지정해서 사용하는 constructor를 NamedContructor라고 한다.
class Point {
double x, y;
Point(this.x, this.y);
Point.origin() {
x = 0;
y = 0;
}
}
void main() {
var point1 = Point(2, 3); // 기본 생성자로 객체 생성
var point2 = Point.origin(); // Named Constructor로 객체 생성
print('point1: (${point1.x}, ${point1.y})'); // 출력: point1: (2.0, 3.0)
print('point2: (${point2.x}, ${point2.y})'); // 출력: point2: (0.0, 0.0)
}
반면에, Factory Constructor는 생성자 호출 결과가 새로운 인스턴스가 아닐 수도 있다는 것이 Named Constructor와 다르다. Factory Constructor는 클래스의 인스턴스를 생성하는 것 외에도, 복잡한 로직을 통해 새로운 객체를 생성하거나, 기존 객체를 재활용하여 리턴할 수도 있다고 한다.
class Rectangle {
int width, height;
Rectangle(this.width, this.height);
factory Rectangle.square(int size) {
return Rectangle(size, size);
}
}
void main() {
var rect1 = Rectangle(2, 3);
var rect2 = Rectangle.square(5);
print('rect1: (${rect1.width}, ${rect1.height})'); // 출력: rect1: (2, 3)
print('rect2: (${rect2.width}, ${rect2.height})'); // 출력: rect2: (5, 5)
}
기존의 constructor에서는 자기자신 Rectangle을 그대로 객체로 가져올 수는 없지만, factory constructor에서는 자기자신 객체를 contructor에서 넣어줄 수 있다.
728x90