คำถามติดแท็ก service-locator

15
รูปแบบการพึ่งพาการฉีดและการบริการค้นหาความแตกต่างคืออะไร
ทั้งสองรูปแบบดูเหมือนจะนำหลักการของการกลับมาควบคุม นั่นคือวัตถุไม่ควรรู้วิธีสร้างการพึ่งพา พึ่งพาการฉีด (DI) ดูเหมือนว่าจะใช้ตัวสร้างหรือ setter เพื่อ "ฉีด" มันขึ้นอยู่กับการพึ่งพา ตัวอย่างการใช้ Constructor Injection: //Foo Needs an IBar public class Foo { private IBar bar; public Foo(IBar bar) { this.bar = bar; } //... } ผู้ให้บริการดูเหมือนว่าจะใช้ "ภาชนะ" ซึ่งสายขึ้นอยู่กับการพึ่งพาและให้แถบมันเป็น foo ตัวอย่างการใช้ตัวระบุบริการ: //Foo Needs an IBar public class Foo { private IBar bar; public …

7
ServiceLocator เป็นการต่อต้านรูปแบบหรือไม่?
เมื่อเร็ว ๆ นี้ฉันได้อ่านบทความของ Mark Seemannเกี่ยวกับรูปแบบการต่อต้าน Service Locator ผู้เขียนชี้ให้เห็นเหตุผลหลักสองประการที่ว่าทำไม ServiceLocator จึงต่อต้านรูปแบบ: ปัญหาการใช้งาน API (ซึ่งฉันก็สบายดี) เมื่อคลาสใช้ตัวระบุตำแหน่งบริการมันยากมากที่จะเห็นการอ้างอิงเนื่องจากในกรณีส่วนใหญ่คลาสจะมีตัวสร้าง PARAMETERLESS เพียงตัวเดียว ในทางตรงกันข้ามกับ ServiceLocator วิธี DI เปิดเผยการอ้างอิงอย่างชัดเจนผ่านพารามิเตอร์ของตัวสร้างเพื่อให้เห็นการอ้างอิงได้ง่ายใน IntelliSense ปัญหาการบำรุงรักษา (ซึ่งทำให้ฉันงง) พิจารณาตัวอย่างต่อไปนี้ เรามีคลาส'MyType'ซึ่งใช้วิธีการระบุตำแหน่งบริการ: public class MyType { public void MyMethod() { var dep1 = Locator.Resolve<IDep1>(); dep1.DoSomething(); } } ตอนนี้เราต้องการเพิ่มการอ้างอิงอื่นให้กับคลาส 'MyType' public class MyType { public void MyMethod() …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.