ฉันกำลังอ่านหนังสือ "Learning TypeScript" โดย Remo Jansen ในส่วนเดียวผู้เขียนอธิบายถึงวิธีการสร้างกรอบงาน MVC ที่พิสูจน์ง่ายของแนวคิดรวมถึงวิธีการสร้างModel
ชั้นเรียนและกล่าวว่าต่อไปนี้:
รูปแบบจะต้องมี URL ของบริการบนเว็บที่ใช้ พวกเราจะใช้ตัวตกแต่งคลาสชื่อ ModelSettings เพื่อตั้งค่า URL ของบริการที่จะใช้ เราสามารถฉีด URL บริการผ่านทางคอนสตรัค แต่ก็ถือว่ามีการปฏิบัติที่ไม่ดีที่จะฉีดข้อมูล (เมื่อเทียบกับพฤติกรรม) ผ่านการสร้างคลาส
ฉันไม่เข้าใจประโยคสุดท้าย โดยเฉพาะฉันไม่เข้าใจว่า "ฉีดข้อมูล" หมายความว่าอย่างไร สำหรับผมแล้วดูเหมือนว่าในการนำเสนอคลาสจาวาเกือบทั้งหมดโดยใช้ตัวอย่างที่ง่ายกว่านั้นจะมีการแนะนำข้อมูล ("injected"?) ลงใน Constructor ผ่านพารามิเตอร์ ตัวอย่างเช่น:
class Person {
constructor(name) {
this.name = name;
}
}
แน่นอนฉันคิดว่าname
เป็นข้อมูลไม่ใช่เป็นพฤติกรรมและรวมอยู่ในระดับสากลในตัวอย่างประเภทนี้เป็นพารามิเตอร์ตัวสร้างและไม่เคยมีการเอ่ยถึงว่านี่เป็นการปฏิบัติที่ไม่ดี ฉันคิดว่าฉันเข้าใจผิดบางอย่างในคำพูดข้างต้นไม่ว่า "data" หรือ "inject" หมายถึงอะไร
คำตอบของคุณอาจรวมถึงคำอธิบายว่าเมื่อใดที่ไหนอย่างไรและทำไมต้องใช้มัณฑนากรใน JavaScript / TypeScript เนื่องจากฉันสงสัยอย่างยิ่งว่าแนวคิดนั้นเชื่อมโยงอย่างใกล้ชิดกับความเข้าใจที่ฉันค้นหา อย่างไรก็ตามที่สำคัญกว่านั้นฉันต้องการที่จะเข้าใจมากขึ้นโดยทั่วไปสิ่งที่มีความหมายโดยการฉีดข้อมูลผ่านตัวสร้างคลาสและเหตุผลที่ไม่ดี
เพื่อให้บริบทเพิ่มเติมเกี่ยวกับการอ้างอิงข้างต้นนี่คือสถานการณ์: Model
คลาสถูกสร้างขึ้นซึ่งในตัวอย่างนี้จะใช้ในการสร้างแบบจำลองการแลกเปลี่ยนหุ้นหนึ่งสำหรับ NASDAQ และอีกหนึ่งสำหรับ NYSE แต่ละรุ่นต้องการเส้นทางของเว็บเซอร์วิสหรือไฟล์ข้อมูลสแตติกที่จะให้ข้อมูลดิบ หนังสือเล่มนี้ระบุว่ามัณฑนากรควรใช้สำหรับข้อมูลนี้แทนที่จะเป็นพารามิเตอร์คอนสตรัคเตอร์ซึ่งนำไปสู่สิ่งต่อไปนี้:
@ModelSettings("./data/nasdaq.json")
class NasdaqModel extends Model implements IModel {
constructor(metiator : IMediator) {
super(metiator);
}
...
}
ฉันไม่เข้าใจว่าทำไมฉันจึงควรเพิ่ม url บริการผ่านทางมัณฑนากรแทนที่จะเป็นเพียงพารามิเตอร์สำหรับนวกรรมิกเช่น
constructor(metiator : IMediator, serviceUrl : string) {...