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

26
รูปแบบของตัวออกแบบการสร้างและรูปแบบการออกแบบจากโรงงานแตกต่างกันอย่างไร
รูปแบบการออกแบบของ Builder และรูปแบบการออกแบบของโรงงานแตกต่างกันอย่างไร ข้อใดที่ได้เปรียบกว่าและทำไม ฉันจะแสดงสิ่งที่ค้นพบของฉันเป็นกราฟได้อย่างไรหากฉันต้องการทดสอบและเปรียบเทียบ / เปรียบต่างรูปแบบเหล่านี้

19
อะไรคือความแตกต่างพื้นฐานระหว่างรูปแบบการออกแบบจากโรงงานและบทคัดย่อ? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา อะไรคือความแตกต่างพื้นฐานระหว่างรูปแบบโรงงานและรูปแบบนามธรรม?

16
รูปแบบการออกแบบนามธรรมจากโรงงานและโรงงานแตกต่างกันอย่างไร
ฉันรู้ว่ามีโพสต์มากมายเกี่ยวกับความแตกต่างระหว่างสองรูปแบบ แต่มีบางสิ่งที่ฉันไม่สามารถหาได้ จากสิ่งที่ฉันได้อ่านฉันเห็นว่ารูปแบบวิธีการจากโรงงานอนุญาตให้คุณกำหนดวิธีการสร้างผลิตภัณฑ์คอนกรีตเพียงอย่างเดียว แต่ซ่อนการใช้งานจากลูกค้าเนื่องจากพวกเขาจะเห็นผลิตภัณฑ์ทั่วไป คำถามแรกของฉันเกี่ยวกับโรงงานที่เป็นนามธรรม บทบาทของมันคือการอนุญาตให้คุณสร้างตระกูลของวัตถุที่เป็นรูปธรรมใน (ซึ่งสามารถขึ้นอยู่กับโรงงานที่คุณใช้เฉพาะ) แทนที่จะเป็นวัตถุรูปธรรมเดียวหรือไม่ โรงงานนามธรรมส่งคืนวัตถุที่มีขนาดใหญ่มากหรือวัตถุจำนวนมากขึ้นอยู่กับวิธีการที่คุณเรียกใช้หรือไม่ คำถามสองข้อสุดท้ายของฉันเกี่ยวกับคำพูดเดียวที่ฉันไม่สามารถเข้าใจได้อย่างเต็มที่ว่าฉันเคยเห็นในหลายแห่ง: ความแตกต่างอย่างหนึ่งระหว่างทั้งสองคือด้วยรูปแบบนามธรรมจากโรงงานชั้นเรียนได้มอบหมายความรับผิดชอบของการสร้างอินสแตนซ์ของวัตถุให้กับวัตถุอื่นผ่านการจัดองค์ประกอบในขณะที่รูปแบบวิธีการของโรงงานใช้การสืบทอดและอาศัยคลาสย่อยเพื่อจัดการ ความเข้าใจของฉันคือรูปแบบวิธีการของโรงงานมีส่วนต่อประสานผู้สร้างที่จะทำให้ ConcreteCreator รับผิดชอบในการทราบว่า ConcreteProduct ใดที่จะยกตัวอย่าง นี่คือความหมายของการใช้การสืบทอดเพื่อจัดการการสร้างอินสแตนซ์ของวัตถุหรือไม่ ตอนนี้เกี่ยวกับคำพูดนั้นรูปแบบนามธรรมจากโรงงานจะมอบหมายความรับผิดชอบในการทำให้เป็นอินสแตนซ์ของวัตถุไปยังวัตถุอื่นผ่านองค์ประกอบได้อย่างไร สิ่งนี้หมายความว่า? ดูเหมือนว่ารูปแบบนามธรรมจากโรงงานยังใช้การสืบทอดเพื่อทำกระบวนการก่อสร้างเช่นกันในสายตาของฉัน แต่แล้วฉันก็ยังเรียนรู้เกี่ยวกับรูปแบบเหล่านี้อีกครั้ง ความช่วยเหลือใด ๆ โดยเฉพาะอย่างยิ่งกับคำถามสุดท้ายจะได้รับการชื่นชมอย่างมาก

10
วิธีการใช้รูปแบบวิธีการจากโรงงานใน C ++ อย่างถูกต้อง
มีสิ่งหนึ่งใน C ++ ที่ทำให้ฉันรู้สึกไม่สบายตัวเป็นเวลานานเพราะฉันไม่รู้วิธีการทำอย่างสุจริตแม้ว่ามันจะฟังดูง่าย: ฉันจะใช้วิธีการโรงงานใน C ++ ได้อย่างถูกต้องได้อย่างไร เป้าหมาย: เพื่อให้ลูกค้าสามารถสร้างอินสแตนซ์ของวัตถุโดยใช้วิธีการจากโรงงานแทนตัวสร้างของวัตถุโดยไม่มีผลกระทบที่ยอมรับไม่ได้และประสิทธิภาพในการทำงาน โดย "รูปแบบวิธีการของโรงงาน" ฉันหมายถึงทั้งวิธีคงที่จากโรงงานภายในวัตถุหรือวิธีที่กำหนดไว้ในคลาสอื่นหรือฟังก์ชั่นระดับโลก เพียงแค่โดยทั่วไป "แนวคิดของการเปลี่ยนเส้นทางวิธีปกติของการสร้างอินสแตนซ์ของคลาส X ไปที่อื่นนอกเหนือจากตัวสร้าง" ให้ฉันอ่านคำตอบที่เป็นไปได้ที่ฉันคิด 0) อย่าสร้างโรงงานสร้างสิ่งก่อสร้าง สิ่งนี้ฟังดูดี (และมักจะเป็นทางออกที่ดีที่สุด) แต่ไม่ใช่วิธีการรักษาทั่วไป ประการแรกมีกรณีที่การก่อสร้างวัตถุเป็นงานที่ซับซ้อนพอที่จะพิสูจน์การแยกไปยังชั้นอื่น แต่ถึงกระนั้นก็ยังมีการวางความจริงนั้นไว้แม้กระทั่งสำหรับวัตถุอย่างง่ายที่ใช้เพียงแค่ตัวสร้างมักจะไม่ทำ ตัวอย่างที่ง่ายที่สุดที่ฉันรู้คือคลาสเวกเตอร์ 2 มิติ เรียบง่าย แต่ซับซ้อน ฉันต้องการสร้างมันทั้งจากพิกัดคาร์ทีเซียนและขั้ว เห็นได้ชัดว่าฉันไม่สามารถทำ: struct Vec2 { Vec2(float x, float y); Vec2(float angle, float magnitude); // not a valid overload! // ... …



7
รูปแบบการออกแบบ: โรงงานกับวิธีการของโรงงานเทียบกับบทคัดย่อจากโรงงาน
ฉันอ่านรูปแบบการออกแบบจากเว็บไซต์ มีฉันอ่านเกี่ยวกับโรงงานวิธีการโรงงานและโรงงานนามธรรม แต่พวกเขาสับสนดังนั้นไม่ชัดเจนในคำจำกัดความ ตามคำจำกัดความ Factory - สร้างวัตถุโดยไม่ต้องเปิดเผยเหตุผลของการสร้างอินสแตนซ์ไปยังไคลเอนต์และอ้างถึงวัตถุที่สร้างขึ้นใหม่ผ่านทางอินเตอร์เฟสทั่วไป เป็นวิธีการที่ง่ายจากเวอร์ชันโรงงาน วิธีการจากโรงงาน - กำหนดอินเทอร์เฟซสำหรับการสร้างวัตถุ แต่ให้คลาสย่อยเพื่อตัดสินใจว่าคลาสใดที่จะสร้างอินสแตนซ์และอ้างถึงวัตถุที่สร้างขึ้นใหม่ผ่านอินเทอร์เฟซทั่วไป Abstract Factory - เสนออินเทอร์เฟซสำหรับสร้างตระกูลของวัตถุที่เกี่ยวข้องโดยไม่ต้องระบุคลาสของพวกเขาอย่างชัดเจน ฉันยังดูเธรดสแต็คโฟลว์อื่น ๆ ที่เกี่ยวข้องกับ Abstract Factory กับ Factory Factory แต่ไดอะแกรม UML ที่นั่นทำให้ฉันเข้าใจยิ่งขึ้น ใครช่วยบอกหน่อยได้ไหม รูปแบบทั้งสามนี้แตกต่างกันอย่างไร จะใช้เมื่อใด และถ้าเป็นไปได้ตัวอย่าง Java ใด ๆ ที่เกี่ยวข้องกับรูปแบบเหล่านี้?

10
รูปแบบการออกแบบ: บทคัดย่อจากโรงงานเทียบกับวิธีการของโรงงาน
หมายเหตุ: คำถามอยู่ท้ายของโพสต์ ฉันได้อ่านกระทู้ StackOverflow อื่น ๆ เกี่ยวกับโรงงานบทคัดย่อ VS โรงงานวิธี ฉันเข้าใจเจตนาของแต่ละรูปแบบ อย่างไรก็ตามฉันไม่ชัดเจนในคำจำกัดความ วิธีการจากโรงงานกำหนดอินเทอร์เฟซสำหรับการสร้างวัตถุ แต่ให้คลาสย่อยตัดสินใจว่าจะสร้างอินสแตนซ์ใด เมธอดจากโรงงานอนุญาตให้คลาสเลื่อนการอินสแตนซ์ไปที่คลาสย่อย ในทางตรงกันข้ามโรงงานนามธรรมให้อินเทอร์เฟซสำหรับการสร้างครอบครัวของวัตถุที่เกี่ยวข้องหรือขึ้นอยู่กับโดยไม่ต้องระบุคลาสที่เป็นรูปธรรมของพวกเขา - John Feminella โรงงานบทคัดย่อมีลักษณะคล้ายกันมากกับโรงงานวิธี ฉันวาดคลาส UML สองสามเพื่อแสดงจุดของฉัน บันทึก: แผนภาพนี้มาจากwww.yuml.comดังนั้นจึงไม่ได้เน้นอย่างสมบูรณ์แบบ แต่มันเป็นบริการฟรี :) ไดอะแกรมอาจไม่สมบูรณ์แบบ ฉันยังคงเรียนรู้รูปแบบการออกแบบของGoF วิธีการโรงงาน: Abstract Factory (เฉพาะสมาชิก 1 คน): บทคัดย่อจากโรงงาน (มีสมาชิกเพิ่ม): คำถาม: หากAbstract Factoryมีผู้สร้างเพียงคนเดียวและหนึ่งผลิตภัณฑ์มันยังคงเป็นรูปแบบAbstract Factoryหรือไม่ (อินเทอร์เฟซสำหรับสร้าง familes) สามารถโรงงานวิธีสร้างคอนกรีตถูกสร้างขึ้นจากการเชื่อมต่อหรือไม่ก็จะต้องมีการออกจากชั้นเรียน? (คลาสเลื่อนการอินสแตนซ์ไปที่คลาสย่อย) หากโรงงานนามธรรมสามารถมีผู้สร้างเพียงคนเดียวและหนึ่งผลิตภัณฑ์ความแตกต่างเพียงอย่างเดียวระหว่างโรงงานนามธรรมและวิธีการโรงงานที่ผู้สร้างสำหรับอดีตคืออินเทอร์เฟซและผู้สร้างสำหรับหลังเป็นระดับหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.