Callable Object ใน Dart คืออะไร ใช้ทำไม

callable object

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