ทำไมรูปแบบฉีดพึ่งพาไม่ incluided ในแก๊งสี่ ? GOF ทำการทดสอบอัตโนมัติอย่างกว้างขวางล่วงหน้าหรือไม่? ตอนนี้การฉีดแบบพึ่งพานั้นถือเป็นรูปแบบหลักหรือไม่?
ทำไมรูปแบบฉีดพึ่งพาไม่ incluided ในแก๊งสี่ ? GOF ทำการทดสอบอัตโนมัติอย่างกว้างขวางล่วงหน้าหรือไม่? ตอนนี้การฉีดแบบพึ่งพานั้นถือเป็นรูปแบบหลักหรือไม่?
คำตอบ:
ฉันเป็นบรรณาธิการของนิตยสารSoftware Developmentเมื่อหนังสือ Gang of Four ออกมาและฉันสามารถพูดได้อย่างมั่นใจว่าการทดสอบหน่วยไม่ใช่การปฏิบัติที่แพร่หลายในปี 1994 เมื่อรูปแบบการออกแบบถูกตีพิมพ์ครั้งแรก
ในปี 1994 C ++ เป็นภาษาเชิงวัตถุที่ใช้กันมากที่สุดและคนส่วนใหญ่เขียนโปรแกรมมันมาจากพื้นหลัง C หนึ่งใน "ความคิดในวัตถุ" ที่ผู้คนไม่มีก็คือความคิดที่ว่าจุดเข้านับร้อยหรือนับพันในโปรแกรมของคุณ main()
คุณคิดเกี่ยวกับ หากคุณทำงานในโครงการขนาดใหญ่คุณอาจมี makefile (มักจะค่อนข้างละเอียด) เพื่อสร้างโปรแกรมแบบโมดูล แต่ "การทดสอบหน่วย"? เริ่มต้นกระบวนการสร้างบริบทหน่วยความจำที่จำเป็นดำเนินการและฉีกมันลงบนพื้นฐานต่อวิธี ? มันรุนแรงมาก
Java ทำให้การโปรแกรมหลายจุดเริ่มต้นชัดเจนขึ้น เมื่อถึงเวลาของ Dot-Com ดั้งเดิมการทดสอบหน่วยเป็นเทคนิคที่รู้จักกันดี แต่จริงๆแล้ว JUnit (ประมาณปี 2001?) ที่ทำให้เกิดเพลิงไหม้และกลายเป็นแนวปฏิบัติสากล
แม้ว่ากลยุทธ์และแนวคิดทั่วไปของการเขียนโปรแกรมไปยังอินเทอร์เฟซเป็นส่วนหนึ่งของ GoF และจิตวิญญาณยุคกลางยุค 90 ความคิดของการฉีดเข้ามาค่อนข้างช้าไปงานเลี้ยง (ประมาณ '03 -'05?) จริง ๆ แล้วขนสีเทาของฉันยังค่อนข้างสงสัยเกี่ยวกับแง่มุมของ DI ("ลงสนามหญ้าของฉันคุณต้องกำหนดค่าไฟล์!")
พวกเขาเรียกมันกลยุทธ์
กลยุทธ์ของพวกเขาดูเหมือนจะมีคุณสมบัติทั้งหมดของการฉีดพึ่งพาโดยไม่มีชื่อที่ซับซ้อนทำให้เกิดเสียง
ฉันคิดว่าการพึ่งพาการฉีดมีความเกี่ยวข้องมากขึ้นเมื่อแยกการใช้งานในระดับชั้น พื้นที่ที่เราคิดเกี่ยวกับการฉีดพึ่งพาคือการทดสอบหน่วย และคำแนะนำก่อนวันที่ของคุณดูเหมือนจะถูกต้อง ถ้าแก๊งจะรวบรวมและแยกรูปแบบในปี 2555 จะต้องมีการฉีดที่ต้องพึ่งพา
กลยุทธ์อาจเกิดขึ้นในการสนทนา แต่กลยุทธ์ไม่ได้พูดถึงการฉีดพึ่งพา แต่เมื่อใช้รูปแบบกลยุทธ์ในโครงการเดียวหรือ dll (คลาสและอินเทอร์เฟซทั้งหมดยังคงอยู่ในโครงการเดียว) ปรากฏว่าเรากำลังทำการฉีดพึ่งพา ในความเป็นจริงเราไม่ได้
ตอนนี้ถ้าคลาสและส่วนต่อประสานที่กล่าวถึงในรูปแบบกลยุทธ์ถูกแยกออกจากโครงการหรือชั้นต่างๆเราจะต้องใช้เทคนิคการฉีดพึ่งพา เราสามารถใช้ไฟล์การกำหนดค่าความเป็นเอกภาพ แต่รูปแบบกลยุทธ์ไม่ได้บอกว่าจะฉีดการพึ่งพา
หากมีรูปแบบที่คล้ายกับการฉีดขึ้นอยู่กับอย่างใกล้ชิดมันเป็นรูปแบบวิธีการโรงงานบทคัดย่อ รูปแบบนี้สามารถใช้ภายในรูปแบบกลยุทธ์เพื่อฉีดการพึ่งพา
คำตอบกลยุทธ์ถูกต้อง 100% ฉันขึ้นคะแนน แต่สามารถแสดงความคิดเห็นได้
"กลยุทธ์ช่วยให้อัลกอริทึมแตกต่างจากลูกค้าที่ใช้ [1] กลยุทธ์เป็นหนึ่งในรูปแบบที่รวมอยู่ในรูปแบบการออกแบบหนังสือที่มีอิทธิพลโดย Gamma และคณะที่นิยมแนวคิดของการใช้รูปแบบเพื่ออธิบายการออกแบบซอฟต์แวร์"
รูปแบบการออกแบบไม่ได้ขึ้นอยู่กับการใช้งาน การพึ่งพาการฉีดจะดำเนินการโดยใช้รูปแบบกลยุทธ์ หากเราตั้งชื่อแต่ละรูปแบบตามกรณีการใช้งานเราจะต้องเปลี่ยนชื่อรูปแบบจำนวนมาก
รูปแบบที่เก็บไม่ใช่รูปแบบใหม่เป็นรูปแบบเทมเพลต
"ในวิธีเทมเพลตของรูปแบบการออกแบบนี้ขั้นตอนวิธีหนึ่งขั้นหรือมากกว่านั้นสามารถถูกแทนที่โดยคลาสย่อยเพื่อให้มีพฤติกรรมที่แตกต่างกันในขณะที่มั่นใจได้ว่าอัลกอริทึมที่ครอบคลุมนั้นยังคงปฏิบัติตามอยู่"
บ่อยครั้งที่รูปแบบนั้นมีหลายรูปแบบรวมกันและตั้งชื่อเช่นรูปแบบ MVC
GOF ไม่มีอินเทอร์เฟซสำหรับคลาสเพียว Abstract และยังใช้ประโยชน์จากความสามารถของ C ++ ในการสืบทอดจากคลาสมากกว่าหนึ่งคลาส