Programming

รู้จัก Ports and Adapters Pattern

August 2, 2026
1 view
0 likes

ให้ Business Logic พึ่งพา Interface แทนการพึ่งพา Database หรือ Framework

Concept

Ports and Adapters หรือ Hexagonal Architecture เป็นแนวคิดที่ช่วยแยก Business Logic ออกจากรายละเอียดภายนอก เช่น Database, API หรือ Framework

Business Layer รู้จักเพียง Interface (Port) ส่วนการเชื่อมต่อกับระบบจริงจะถูกจัดการโดย Adapter

Entity

Business Model ที่ไม่รู้จัก Database

  • เป็น Model ของ Domain
  • ไม่รู้จัก Prisma
  • ไม่รู้จัก SQL
  • ไม่รู้จัก MongoDB

Port

Business บอกว่า "ฉันต้องการอะไร" Port คือสัญญา (Contract) Business ไม่สนใจว่าข้อมูลมาจากไหน

Business Logic

Business Logic รู้แค่ repository.findById(...) แต่ไม่รู้ว่า findById(id) ทำอะไรบ้าง

Adapter

ยกตัวอย่างเป็น Prisma Adapter คือคนทำงานจริง Business แค่บอกว่า

ขอ User หน่อย

Adapter จะเป็นคนไปถาม Database มาให้

Adapter (Mock)

ถ้าต้องการ Test สามารถทำได้ง่ายๆ เพียงแค่ Mock Adapter

Composition Root

จุดที่เราจะประกอบทุกอย่างเข้าด้วยกัน

Controller

Flow ที่ได้ก็จะหน้าตาแบบนี้

ดังนั้นถ้าจะเปลี่ยน Database ก็แค่เปลี่ยน PrismaUserRepository (Adapter) เป็น Adapter ของ Database ตัวอื่นได้เลยโดยไม่ต้องเปลี่ยน Business Logics

สรุป

แนวคิดสำคัญของ Ports and Adapters คือ Business Logic ไม่ควรขึ้นกับรายละเอียดของ Infrastructure แต่ควรสื่อสารผ่าน Interface เพื่อให้ระบบยืดหยุ่น ทดสอบง่าย และเปลี่ยนเทคโนโลยีได้โดยกระทบกับโค้ดน้อยที่สุด