คำถามติดแท็ก factory

9
เหตุใดฉันจึงควรใช้คลาสโรงงานแทนการสร้างวัตถุโดยตรง
ฉันได้เห็นประวัติของโครงการห้องสมุดคลาสС # และ Java หลายรายการบน GitHub และ CodePlex และฉันเห็นแนวโน้มของการเปลี่ยนไปใช้คลาสของโรงงานซึ่งต่างจากการอินสแตนซ์วัตถุโดยตรง เหตุใดฉันจึงควรใช้คลาสของโรงงานอย่างกว้างขวาง ฉันมีห้องสมุดที่ค่อนข้างดีที่ซึ่งวัตถุต่าง ๆ ถูกสร้างขึ้นในแบบสมัยเก่า - โดยการเรียกใช้คลาสก่อสร้างสาธารณะ ในช่วงสุดท้ายผู้เขียนได้ทำการเปลี่ยนแปลงอย่างรวดเร็วของการสร้างสาธารณะทั้งหมดของหลายพันชั้นเรียนเป็นภายในและยังสร้างชั้นโรงงานขนาดใหญ่ที่มีCreateXXXวิธีการคงที่หลายพันที่เพียงแค่ส่งคืนวัตถุใหม่โดยการเรียกตัวสร้างภายในของชั้นเรียน API โครงการภายนอกใช้งานไม่ได้ เหตุใดการเปลี่ยนแปลงเช่นนี้จึงมีประโยชน์ อะไรคือประเด็นของการปรับโครงสร้างด้วยวิธีนี้ ประโยชน์ของการแทนที่การเรียกไปยังตัวสร้างคลาสสาธารณะด้วยการเรียกใช้เมธอดสแตติกจากโรงงานคืออะไร? ฉันควรใช้ช่างก่อสร้างสาธารณะเมื่อใดและฉันควรใช้โรงงานเมื่อใด

7
รูปแบบของโรงงานละเมิดหลักการเปิด / ปิดหรือไม่?
เหตุใด ShapeFactory นี้จึงใช้คำสั่งแบบมีเงื่อนไขเพื่อกำหนดว่าวัตถุใดที่จะยกตัวอย่าง เราไม่จำเป็นต้องปรับเปลี่ยน ShapeFactory หากเราต้องการเพิ่มคลาสอื่น ๆ ในอนาคตหรือไม่ ทำไมสิ่งนี้ถึงไม่ละเมิดหลักการเปิดที่เปิดอยู่?

3
โรงงาน DI / IoC คอนเทนเนอร์ vs โรงงาน: ฉันจะกำหนดค่าแอปพลิเคชันของฉันได้ที่ไหนและเพราะเหตุใด
ฉันกำลังพยายามคิดออกว่าจะใช้รีจิสตรี DIC / IoC ในการกำหนดค่าซอฟต์แวร์ของฉันและเมื่อใดที่จะใช้โรงงานพร้อมกับเหตุผลที่อยู่เบื้องหลังทั้งสองวิธี ฉันใช้ StructureMap เป็น DI container ของฉัน (DIC) ซึ่งง่ายต่อการกำหนดค่าโดยใช้การลงทะเบียน ใน DIC จริงวัตถุที่ลงทะเบียนทั้งหมดเป็นแบบคงที่ในความรู้สึกที่ฉันไม่จำเป็นต้องเปลี่ยน / แลกเปลี่ยนการใช้งาน / อินสแตนซ์ที่รันไทม์เมื่อ DIC มีการกำหนดค่าและพวกเขาจะถูกกำหนดค่าใน DIC เป็น singletons อย่างไรก็ตามเนื่องจากซอฟต์แวร์ (SW) ของฉันจะทำงานในอุปกรณ์ต่าง ๆ ฉันจึงต้องเลือกรีจิสตรีเฉพาะอุปกรณ์ขึ้นอยู่กับอุปกรณ์ที่ SW ของฉันทำงานเพื่อกำหนดค่าฮาร์ดแวร์ให้เหมาะสม เนื่องจากการสร้างวัตถุบางอย่างของฉันต้องอ่านในไฟล์กำหนดค่าฉันจึงใช้โรงงานเพื่อส่งคืนอินสแตนซ์เหล่านี้ไปยัง DIC เพื่อแยกการอ่านการกำหนดค่าออกจากการสร้างวัตถุ ฉันลงทะเบียนตัวรับสัญญาณจากโรงงานใน DIC สำหรับประเภทปลั๊กอินที่เกี่ยวข้อง ตอนนี้บอกว่าฉันมีประเภทปลั๊กอินที่IMotorมีรูปแบบที่เป็นรูปธรรมMotor1และMotor2ซึ่งควรได้รับการจัดการโดยโรงงาน ขณะนี้มีสองวิธีที่ฉันสามารถตัดสินใจได้ว่าจะกำหนดค่าอุปกรณ์ของฉันอย่างไร: ฉันผ่านข้อมูลเกี่ยวกับอุปกรณ์ที่ว่า SW กำลังทำงานอยู่บนไปMotorFactoryและจะส่งกลับมอเตอร์ที่ถูกต้องอย่างใดอย่างหนึ่งหรือMotor1 Motor2ในกรณีนี้ตรรกะในการตัดสินใจอยู่ภายในโรงงาน ผมกำหนดค่าไอซีตามไปยังอุปกรณ์ที่ทำงานอยู่ในและสร้างโรงงานที่สองMotor1FactoryและMotor2Factoryที่หนึ่งสร้างและอื่น ๆMotor1 Motor2ในกรณีนี้ผมจะมีที่แตกต่างกันสำหรับรายการรีจิสทรีIMotorในการลงทะเบียนเฉพาะอุปกรณ์ที่ใช้อย่างใดอย่างหนึ่งหรือMotor1FactoryMotor2Factory ตอนนี้คำถามของฉันคือ: หนึ่งในสองวิธีนี้เป็นที่นิยมและทำไม สำหรับฉันดูเหมือนว่ากรณีแรกจะไม่ตรงไปข้างหน้าและซับซ้อนเนื่องจากฉันกระจายตรรกะที่ตัดสินใจประเภทที่จะยกตัวอย่างทั่วรหัสฐาน …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.