> Dependency Injection worth it **outside** of UnitTesting?
> Are we justified in avoiding trying to program to an interface?
คำตอบมากมายสำหรับคำถามนี้สามารถถกเถียงกันว่า "คุณอาจจำเป็นต้องใช้เพราะ .. " เป็น YAGNI หากคุณไม่ต้องการที่จะไม่ทำเงิน
หากคุณถามว่าสาเหตุใดที่อยู่นอกเหนือจาก unittests จำเป็นต้องตั้งโปรแกรมให้อินเทอร์เฟซ
ใช่ , พึ่งพาการฉีดมูลค่ามันนอกของ unittesting ถ้าคุณต้องการความผกผันของการควบคุม ตัวอย่างเช่นหากการนำโมดูลไปใช้งานต้องการโมดูลอื่นที่ไม่สามารถเข้าถึงได้ในเลเยอร์
ตัวอย่าง: ถ้าคุณมีโมดูลgui
=> businesslayer
=> =>driver
common
ในสถานการณ์นี้businesslayer
สามารถใช้driver
แต่ไม่สามารถใช้driver
businesslayer
หากdriver
ต้องการฟังก์ชั่นระดับสูงคุณสามารถใช้ฟังก์ชั่นนี้businesslayer
ซึ่งใช้อินเตอร์เฟซในcommon
เลเยอร์
driver
ต้องการทราบอินเตอร์เฟสในcommon
เลเยอร์เท่านั้น