คำถามติดแท็ก interface-design

5
มีรูปแบบสำหรับการเริ่มต้นวัตถุที่สร้างผ่านคอนเทนเนอร์ DI หรือไม่
ฉันพยายามรับ Unity เพื่อจัดการการสร้างวัตถุของฉันและฉันต้องการมีพารามิเตอร์การกำหนดค่าเริ่มต้นบางอย่างที่ไม่รู้จักจนกระทั่งเวลาใช้งาน: ในขณะนี้วิธีเดียวที่ฉันสามารถคิดวิธีทำคือมีวิธี Init บนอินเทอร์เฟซ interface IMyIntf { void Initialize(string runTimeParam); string RunTimeParam { get; } } จากนั้นให้ใช้ (ใน Unity) ฉันจะทำสิ่งนี้: var IMyIntf = unityContainer.Resolve<IMyIntf>(); IMyIntf.Initialize("somevalue"); ในสถานการณ์สมมตินี้runTimeParamจะกำหนดพารามิเตอร์ขณะใช้งานโดยยึดตามข้อมูลผู้ใช้ กรณีเล็ก ๆ น้อย ๆ ที่นี่เพียงคืนค่าrunTimeParamแต่ในความเป็นจริงพารามิเตอร์จะเป็นชื่อไฟล์และวิธีการเริ่มต้นจะทำอะไรกับไฟล์ สิ่งนี้สร้างปัญหาจำนวนหนึ่ง ได้แก่ Initializeวิธีนี้มีอยู่ในส่วนต่อประสานและสามารถเรียกได้หลายครั้ง การตั้งธงในการดำเนินการและการขว้างปาข้อยกเว้นในการเรียกซ้ำInitializeดูเหมือนว่าวิธีที่อุ้ยอ้าย เมื่อถึงจุดที่ฉันแก้ไขอินเทอร์เฟซของฉันฉันไม่ต้องการรู้อะไรเกี่ยวกับการใช้งาน IMyIntfเมื่อมาถึงจุดที่ผมแก้ไขอินเตอร์เฟซของฉันฉันไม่ต้องการที่จะรู้อะไรเกี่ยวกับการดำเนินงานของสิ่งที่ฉันต้องการคือความรู้ที่ว่าอินเตอร์เฟสนี้ต้องการพารามิเตอร์การกำหนดค่าเริ่มต้นที่แน่นอน มีวิธีการอย่างใดคำอธิบายประกอบ (คุณสมบัติ?) อินเตอร์เฟซที่มีข้อมูลนี้และส่งผ่านไปยังกรอบเมื่อวัตถุถูกสร้างขึ้น? แก้ไข: อธิบายอินเตอร์เฟสอีกเล็กน้อย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.