อะไรคือกลยุทธ์ของ OOP สำหรับการทำงานกับฐานข้อมูล แต่ทำให้สิ่งต่าง ๆ ที่หน่วยทดสอบได้? ว่าฉันมีคลาสผู้ใช้และสภาพแวดล้อมการผลิตของฉันทำงานกับ MySQL ฉันเห็นแนวทางที่เป็นไปได้สองสามข้อแสดงที่นี่โดยใช้ PHP:
ส่งผ่าน $ data_source พร้อมอินเทอร์เฟซสำหรับ
load()
และsave()
เป็นนามธรรมแหล่งข้อมูลเบื้องหลัง เมื่อทำการทดสอบให้ส่งผ่านแหล่งข้อมูลอื่น$ user = ผู้ใช้ใหม่ ($ mysql_data_source); $ user-> load ('bob'); $ user-> setNickname ('Robby'); $ ที่ผู้ใช้> บันทึก ();
ใช้โรงงานที่เข้าถึงฐานข้อมูลและส่งผ่านแถวผลลัพธ์ไปยังตัวสร้างของผู้ใช้ เมื่อทำการทดสอบให้สร้างพารามิเตอร์ $ row หรือจำลองวัตถุใน UserFactory :: $ data_source ด้วยตนเอง (ฉันจะบันทึกการเปลี่ยนแปลงในระเบียนได้อย่างไร)
class UserFactory { static $data_source; public static function fetch( $username ) { $row = self::$data_source->get( [params] ); $user = new User( $row ); return $user; } }
ฉันมีรูปแบบการออกแบบและรหัสสะอาดที่นี่ถัดจากฉัน แต่ฉันดิ้นรนเพื่อค้นหาแนวคิดที่เกี่ยวข้อง