Callable Object ใน Dart
Callable Object คือ object ที่ถูกเรียกเหมือน function ได้
โดยการประกาศ method พิเศษชื่อว่า call()
class Adder {
final int base;
Adder(this.base);
int call(int value) {
return base + value;
}
}
เมื่อสร้าง instance แล้ว สามารถเรียกแบบนี้ได้ทันที
final add10 = Adder(10);
add10(5); // 15
แม้ add10 จะเป็น object
แต่ Dart อนุญาตให้เรียกมันเหมือน function
ทำไมต้องใช้ Callable Object
เหตุผลหลักคือ เราอยากได้ความง่ายแบบ function
แต่ยังคงโครงสร้างและพลังของ class
เหตุผลที่ควรใช้
- เก็บ state ได้ (function ทำไม่ได้)
- มี dependency ได้ (เช่น repository, service)
- ชื่อ class ช่วยสื่อความหมายของ logic
- เหมาะกับ business logic / use case
ตัวอย่างเช่น
class LoginUser {
final AuthRepository repo;
LoginUser(this.repo);
Future<User> call(String email, String password) {
return repo.login(email, password);
}
}
เวลาใช้งานจะอ่านง่ายมาก
await loginUser(email, password);
สรุป
Callable Object =
เขียนเหมือนเรียก function
แต่ได้ความสามารถของ class
เหมาะกับ:
- use case
- business logic
- โค้ดระดับ application
ไม่เหมาะกับ:
- utility function สั้น ๆ
- logic ง่าย ๆ ไม่มี state

