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