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

รูปแบบการออกแบบเป็นโซลูชันที่ใช้ซ้ำได้ทั่วไปสำหรับปัญหาที่เกิดขึ้นทั่วไปในการออกแบบซอฟต์แวร์ ใช้แท็กนี้สำหรับคำถามเมื่อคุณมีปัญหากับการใช้รูปแบบการออกแบบ โปรดอย่าใช้แท็กนี้กับคำถามเกี่ยวกับการจับคู่รูปแบบข้อความ เมื่อใช้แท็กนี้กับคำถามที่มีการใช้งานหนัก - ติดแท็กรหัสภาษาที่มีการใช้งาน

8
รูปแบบใด ๆ สำหรับการสร้างแบบจำลองเกมกระดาน? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ เพื่อความสนุกสนานฉันพยายามเขียนเกมกระดานโปรดของลูกชายเป็นซอฟต์แวร์ชิ้นหนึ่ง ในที่สุดฉันคาดหวังว่าจะสร้าง WPF UI ขึ้นมา แต่ตอนนี้ฉันกำลังสร้างเครื่องที่จำลองเกมและกฎของมัน เมื่อฉันทำเช่นนี้ฉันมักจะเห็นปัญหาที่ฉันคิดว่าเป็นเรื่องธรรมดาของเกมกระดานหลาย ๆ เกมและบางทีคนอื่น ๆ ก็แก้ปัญหาได้ดีกว่าฉัน (โปรดทราบว่า AI ในการเล่นเกมและรูปแบบรอบ ๆ ประสิทธิภาพสูงนั้นไม่น่าสนใจสำหรับฉัน) จนถึงตอนนี้รูปแบบของฉันคือ: หลายประเภทที่ไม่เปลี่ยนรูปแทนเอนทิตีในกล่องเกมเช่นลูกเต๋าหมากฮอสไพ่กระดานช่องว่างบนกระดานเงินเป็นต้น วัตถุสำหรับผู้เล่นแต่ละคนซึ่งมีทรัพยากรของผู้เล่น (เช่นเงินคะแนน) ชื่อของพวกเขา ฯลฯ วัตถุที่แสดงถึงสถานะของเกม: ผู้เล่นผู้ที่หันมาใช้เลย์เอาต์ของพีคบนกระดานเป็นต้น เครื่องสถานะที่จัดการลำดับการเลี้ยว ตัวอย่างเช่นหลายเกมมีเกมก่อนเกมเล็ก ๆ ที่ผู้เล่นแต่ละคนจะหมุนเพื่อดูว่าใครไปก่อน นั่นคือสถานะเริ่มต้น เมื่อเทิร์นของผู้เล่นเริ่มขึ้นก่อนอื่นพวกเขาจะกลิ้งจากนั้นจึงเคลื่อนที่จากนั้นพวกเขาจะต้องเต้นเข้าที่จากนั้นผู้เล่นคนอื่น ๆ จะเดาว่าพวกเขาเป็นไก่พันธุ์อะไรจากนั้นพวกเขาจะได้รับคะแนน มีศิลปะก่อนหน้านี้ที่ฉันสามารถใช้ประโยชน์ได้หรือไม่? แก้ไข:สิ่งหนึ่งที่ฉันเพิ่งรู้เมื่อเร็ว ๆ นี้คือสถานะของเกมสามารถแบ่งออกเป็นสองประเภท: รัฐสิ่งประดิษฐ์เกม "ฉันมีเงิน $ 10" หรือ …

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

4
หลักการออกแบบแนวทางปฏิบัติที่ดีที่สุดและรูปแบบการออกแบบสำหรับ C (หรือการเขียนโปรแกรมขั้นตอนโดยทั่วไป)? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบพร้อมข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ มีหลักการออกแบบแนวทางปฏิบัติที่ดีที่สุดและรูปแบบการออกแบบที่เป็นที่รู้จักที่สามารถปฏิบัติตามได้ในขณะออกแบบโครงการ C หรือไม่? หรือหลักการออกแบบที่เป็นประโยชน์สำหรับการเขียนโปรแกรมขั้นตอน (จำเป็น) โดยทั่วไป? (ฉันเป็นลูกของ 'รุ่นเชิงวัตถุ' และต้องออกแบบโครงการ C ขนาดใหญ่เป็นครั้งแรก)

7
รูปแบบการออกแบบ Dependency Injection & Singleton
เราจะระบุได้อย่างไรว่าเมื่อใดควรใช้รูปแบบการฉีดพึ่งพาหรือรูปแบบซิงเกิลตัน ฉันได้อ่านในเว็บไซต์จำนวนมากที่พวกเขาพูดว่า "ใช้การฉีดขึ้นข้อมูลบนรูปแบบซิงเกิลตัน" แต่ฉันไม่แน่ใจว่าฉันเห็นด้วยกับพวกเขาทั้งหมดหรือไม่ สำหรับโครงการขนาดเล็กหรือขนาดกลางของฉันฉันเห็นการใช้รูปแบบซิงเกิลตันอย่างตรงไปตรงมา ตัวอย่างเช่น Logger ฉันสามารถใช้Logger.GetInstance().Log(...) แต่แทนที่จะเป็นแบบนี้ทำไมฉันต้องฉีดทุกคลาสที่ฉันสร้างด้วยอินสแตนซ์ของคนตัดไม้?

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

5
ถ้า Singletons ไม่ดีเหตุใด Service Container จึงดี?
เราทุกคนรู้วิธีSingletons ไม่ดีเพราะพวกเขาซ่อนอ้างอิงและเหตุผลอื่น ๆ แต่ในเฟรมเวิร์กอาจมีอ็อบเจ็กต์จำนวนมากที่ต้องสร้างอินสแตนซ์เพียงครั้งเดียวและถูกเรียกใช้จากทุกที่ (คนตัดไม้, ฐานข้อมูล ฯลฯ ) เพื่อแก้ปัญหานี้ฉันได้รับคำสั่งให้ใช้สิ่งที่เรียกว่า "Objects Manager" (หรือService Containerเช่น symfony) ที่เก็บข้อมูลอ้างอิงถึง Services (คนตัดไม้ ฯลฯ ) ไว้ภายใน แต่ทำไมผู้ให้บริการถึงไม่เลวร้ายเท่ากับ Singleton ที่บริสุทธิ์? ผู้ให้บริการซ่อนการอ้างอิงด้วยและพวกเขาเพิ่งสรุปการสร้าง istance แรก ดังนั้นฉันจึงลำบากมากที่จะเข้าใจว่าทำไมเราควรใช้ผู้ให้บริการแทนที่จะใช้เสื้อกล้าม ปล. ฉันรู้ว่าการไม่ซ่อนการอ้างอิงฉันควรใช้ DI (ตามที่ระบุไว้โดย Misko) เพิ่ม ฉันจะเพิ่ม: ทุกวันนี้เสื้อกล้ามไม่ได้ชั่วร้ายผู้สร้าง PHPUnit อธิบายไว้ที่นี่: http://sebastian-bergmann.de/archives/882-Testing-Code-That-Uses-Singletons.html DI + Singleton แก้ปัญหา: <?php class Client { public function doSomething(Singleton $singleton …

3
Model-View-Presenter ใน WinForms
ฉันพยายามใช้วิธี MVP เป็นครั้งแรกโดยใช้ WinForms ฉันพยายามเข้าใจการทำงานของแต่ละเลเยอร์ ในโปรแกรมของฉันฉันมีปุ่ม GUI ที่เมื่อคลิกแล้วจะเปิดหน้าต่าง openfiledialog ดังนั้นการใช้ MVP GUI จะจัดการกับเหตุการณ์การคลิกปุ่มแล้วเรียก Presenter.openfile (); ภายใน Presenter.openfile () ควรมอบหมายการเปิดไฟล์นั้นให้กับเลเยอร์โมเดลหรือเนื่องจากไม่มีข้อมูลหรือตรรกะในการประมวลผลควรดำเนินการตามคำขอและเปิดหน้าต่าง openfiledialog หรือไม่ อัปเดต: ฉันได้ตัดสินใจที่จะเสนอเงินรางวัลเนื่องจากฉันรู้สึกว่าต้องการความช่วยเหลือเพิ่มเติมเกี่ยวกับเรื่องนี้และควรปรับให้เหมาะกับประเด็นเฉพาะของฉันด้านล่างเพื่อให้ฉันมีบริบท เอาล่ะหลังจากอ่าน MVP แล้วฉันได้ตัดสินใจที่จะใช้ Passive View อย่างมีประสิทธิภาพฉันจะมีการควบคุมมากมายบน Winform ซึ่งจะจัดการโดยผู้นำเสนอและจากนั้นงานที่มอบหมายให้กับ Model (s) ประเด็นเฉพาะของฉันอยู่ด้านล่าง: เมื่อโหลด winform จะต้องได้รับ Treeview ฉันถูกต้องหรือไม่ที่คิดว่ามุมมองควรเรียกใช้เมธอดเช่น Presenter.gettree () สิ่งนี้จะมอบสิทธิ์ให้กับโมเดลซึ่งจะได้รับข้อมูลสำหรับ Treeview สร้างและกำหนดค่ากลับไปที่ ผู้นำเสนอซึ่งจะส่งผ่านไปยังมุมมองซึ่งจะกำหนดให้เป็นแผงพูด? สิ่งนี้จะเหมือนกันสำหรับการควบคุมข้อมูลใด ๆ บน Winform เนื่องจากฉันมี …

16
tar: เพิ่มไฟล์และไดเร็กทอรีทั้งหมดในไดเร็กทอรีปัจจุบันซึ่งรวมถึง. svn และอื่น ๆ
ฉันพยายาม tar.gz ไดเรกทอรีและใช้ tar -czf workspace.tar.gz * tar ที่ได้จะมี.svnไดเร็กทอรีในไดเร็กทอรีย่อย แต่ไม่อยู่ในไดเร็กทอรีปัจจุบัน (เนื่องจาก*ขยายเป็นไฟล์ 'มองเห็นได้' เท่านั้นก่อนที่จะถูกส่งไปยัง tar ฉันพยายามที่จะ tar -czf workspace.tar.gz .แต่แล้วฉันก็ได้รับข้อผิดพลาดเนื่องจาก "." มีการเปลี่ยนแปลงขณะอ่าน: tar: ./workspace.tar.gz: file changed as we read it มีเคล็ดลับในการ*จับคู่ไฟล์ทั้งหมด (รวมถึงจุดที่นำหน้า) ในไดเรกทอรีหรือไม่ (ใช้ bash บน Linux SLES-11 (2.6.27.19)

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

9
ส่งคืน ImmutableMap หรือ Map ดีกว่าไหม
สมมติว่าผมเขียนวิธีการที่ควรจะกลับเป็นแผนที่ ตัวอย่างเช่น: public Map<String, Integer> foo() { return new HashMap<String, Integer>(); } หลังจากคิดทบทวนอยู่พักหนึ่งฉันก็ตัดสินใจว่าไม่มีเหตุผลที่จะแก้ไขแผนที่นี้เมื่อสร้างขึ้นแล้ว ดังนั้นผมอยากจะกลับImmutableMap public Map<String, Integer> foo() { return ImmutableMap.of(); } ฉันควรปล่อยประเภทการส่งคืนเป็นแผนที่ทั่วไปหรือฉันควรระบุว่าฉันส่งคืน ImmutableMap? จากด้านหนึ่งนี่คือสาเหตุที่สร้างอินเทอร์เฟซสำหรับ; เพื่อซ่อนรายละเอียดการใช้งาน ในทางกลับกันถ้าฉันปล่อยไว้แบบนี้นักพัฒนารายอื่นอาจพลาดข้อเท็จจริงที่ว่าวัตถุนี้ไม่เปลี่ยนรูป ดังนั้นฉันจะไม่บรรลุเป้าหมายหลักของวัตถุที่ไม่เปลี่ยนรูป เพื่อทำให้โค้ดชัดเจนยิ่งขึ้นโดยการลดจำนวนวัตถุที่เปลี่ยนแปลงได้ แม้จะแย่ที่สุดหลังจากนั้นสักครู่อาจมีคนพยายามเปลี่ยนอ็อบเจ็กต์นี้และจะส่งผลให้เกิดข้อผิดพลาดรันไทม์ (คอมไพเลอร์จะไม่เตือนเกี่ยวกับมัน)

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

5
point of accept () method ใน Visitor pattern คืออะไร?
มีการพูดคุยมากมายเกี่ยวกับการแยกอัลกอริทึมออกจากคลาส แต่มีสิ่งหนึ่งที่ไม่สามารถอธิบายได้ พวกเขาใช้ผู้เยี่ยมชมเช่นนี้ abstract class Expr { public <T> T accept(Visitor<T> visitor) {visitor.visit(this);} } class ExprVisitor extends Visitor{ public Integer visit(Num num) { return num.value; } public Integer visit(Sum sum) { return sum.getLeft().accept(this) + sum.getRight().accept(this); } public Integer visit(Prod prod) { return prod.getLeft().accept(this) * prod.getRight().accept(this); } แทนที่จะเรียกการเยี่ยมชม (องค์ประกอบ) โดยตรงผู้เยี่ยมชมจะขอให้องค์ประกอบเรียกวิธีการเยี่ยมชม มันขัดแย้งกับความคิดที่ประกาศในชั้นเรียนไม่รู้เกี่ยวกับผู้เยี่ยมชม …

14
คลาสนามธรรมเทียบกับอินเตอร์เฟสใน Java
ฉันถูกถามคำถามฉันต้องการรับคำตอบของฉันตรวจสอบที่นี่ ถาม:ในสถานการณ์ใดที่เหมาะสมกว่าในการขยายคลาสนามธรรมมากกว่าการใช้อินเทอร์เฟซ ตอบ:หากเราใช้รูปแบบวิธีการออกแบบเทมเพลต ฉันถูกไหม ? ขออภัยหากไม่สามารถระบุคำถามได้อย่างชัดเจน ฉันรู้ความแตกต่างพื้นฐานระหว่างคลาสนามธรรมและอินเทอร์เฟซ 1) ใช้คลาสนามธรรมเมื่อความต้องการเป็นเช่นนั้นเราจำเป็นต้องใช้ฟังก์ชันเดียวกันในทุกคลาสย่อยสำหรับการดำเนินการเฉพาะ (ใช้วิธีการ) และฟังก์ชันการทำงานที่แตกต่างกันสำหรับการดำเนินการอื่น ๆ (เฉพาะลายเซ็นของวิธีการเท่านั้น) 2) ใช้อินเทอร์เฟซหากคุณต้องการกำหนดลายเซ็นให้เหมือนกัน (และการนำไปใช้งานที่แตกต่างกัน) เพื่อให้คุณสามารถปฏิบัติตามการใช้งานอินเทอร์เฟซได้ 3) เราสามารถขยายคลาสนามธรรมได้สูงสุดหนึ่งคลาส แต่สามารถใช้งานได้มากกว่าหนึ่งอินเทอร์เฟซ การย้ำคำถาม:มีสถานการณ์อื่น ๆ นอกเหนือจากที่กล่าวมาข้างต้นหรือไม่โดยเฉพาะที่เราต้องการให้ใช้คลาสนามธรรม (สิ่งที่เห็นคือรูปแบบวิธีการออกแบบเทมเพลตเป็นแนวคิดตามแนวคิดนี้เท่านั้น) อินเทอร์เฟซเทียบกับคลาสนามธรรม การเลือกระหว่างสองสิ่งนี้ขึ้นอยู่กับว่าคุณต้องการทำอะไร แต่โชคดีสำหรับเรา Erich Gamma สามารถช่วยเราได้เล็กน้อย เช่นเคยมีการปิด, อินเตอร์เฟซที่ช่วยให้คุณมีอิสระในเรื่องเกี่ยวกับชั้นฐานกับระดับนามธรรมจะช่วยให้คุณมีอิสระในการเพิ่มวิธีการใหม่ในภายหลัง - เอริชแกมมา คุณไม่สามารถเปลี่ยนอินเทอร์เฟซได้โดยไม่ต้องเปลี่ยนสิ่งอื่น ๆ มากมายในโค้ดของคุณดังนั้นวิธีเดียวที่จะหลีกเลี่ยงปัญหานี้ได้คือการสร้างอินเทอร์เฟซใหม่ทั้งหมดซึ่งอาจไม่ใช่สิ่งที่ดีเสมอไป Abstract classesควรใช้เป็นหลักสำหรับวัตถุที่เกี่ยวข้องอย่างใกล้ชิด Interfacesจะดีกว่าในการจัดหาฟังก์ชันการทำงานทั่วไปสำหรับคลาสที่ไม่เกี่ยวข้อง

4
"เลเยอร์ตรรกะทางธุรกิจ" อยู่ตรงไหนในแอปพลิเคชัน MVC
ก่อนอื่นก่อนที่ใครจะกรีดร้องหลอกลวงฉันมีช่วงเวลาที่ยากลำบากในการสรุปเป็นชื่อเรื่องง่ายๆ ชื่ออื่นอาจเป็น "โมเดลโดเมนกับโมเดล MVC ต่างกันอย่างไร" หรือ "โมเดลคืออะไร" ตามแนวคิดแล้วฉันเข้าใจ Model เป็นข้อมูลที่มุมมองและผู้ควบคุมใช้ นอกเหนือจากนั้นดูเหมือนว่าจะมีความคิดเห็นที่แตกต่างกันมากมายเกี่ยวกับสิ่งที่ประกอบเป็นโมเดล โมเดลโดเมนคืออะไรเทียบกับโมเดลแอปเทียบกับโมเดลมุมมองเทียบกับโมเดลบริการ ฯลฯ ตัวอย่างเช่นในคำถามล่าสุดที่ฉันถามเกี่ยวกับรูปแบบพื้นที่เก็บข้อมูลฉันได้รับแจ้งว่าพื้นที่เก็บข้อมูลเป็นส่วนหนึ่งของโมเดล อย่างไรก็ตามฉันได้อ่านความคิดเห็นอื่น ๆ ว่าควรแยกโมเดลออกจากโมเดลการคงอยู่และเลเยอร์ตรรกะทางธุรกิจ ท้ายที่สุดแล้วรูปแบบพื้นที่เก็บข้อมูลไม่ควรแยกวิธีการคงอยู่ของคอนกรีตออกจากแบบจำลองหรือไม่? คนอื่น ๆ บอกว่ามีความแตกต่างระหว่างโมเดลโดเมนและโมเดล MVC ลองยกตัวอย่างง่ายๆ AccountController ที่มาพร้อมกับโครงการเริ่มต้น MVC ฉันได้อ่านความคิดเห็นหลายประการว่ารหัสบัญชีที่รวมอยู่มีการออกแบบที่ไม่ดีละเมิด SRP ฯลฯ .. ฯลฯ หากมีการออกแบบรูปแบบการเป็นสมาชิกที่ "เหมาะสม" สำหรับแอปพลิเคชัน MVC จะเป็นอย่างไร คุณจะแยกบริการ ASP.NET (ผู้ให้บริการสมาชิกผู้ให้บริการบทบาท ฯลฯ ) ออกจากโมเดลอย่างไร หรือคุณจะทำเลย? วิธีที่ฉันเห็นแบบจำลองควร "บริสุทธิ์" บางทีอาจจะมีตรรกะการตรวจสอบความถูกต้อง .. แต่ควรแยกออกจากกฎทางธุรกิจ (นอกเหนือจากการตรวจสอบความถูกต้อง) ตัวอย่างเช่นสมมติว่าคุณมีกฎทางธุรกิจที่ระบุว่าจะต้องมีคนได้รับอีเมลเมื่อสร้างบัญชีใหม่ …

25
การเรียนรู้ / การปรับใช้รูปแบบการออกแบบ (สำหรับมือใหม่) [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน9 ปีที่ผ่านมา ฉันเป็นมือใหม่ที่สับสนและเป็นนักเขียนโปรแกรมมือสมัครเล่นที่พยายามจับประเด็นนี้ดังนั้นโปรดยกโทษให้ฉันหากคำถามของฉันผิดไปเล็กน้อยหรือไม่สมเหตุสมผล ฉันเห็นคำถามมากมายเกี่ยวกับ SO เกี่ยวกับการใช้รูปแบบการออกแบบและฉันสงสัยว่าใครมีแหล่งข้อมูลที่ดีสำหรับการเรียนรู้และใช้รูปแบบการออกแบบหรือไม่? ฉันเข้าใจแนวคิดทั่วไปและรู้วิธี / เวลาที่จะใช้สองอย่าง (Singletons, Factory method) แต่ฉันรู้ว่าฉันพลาด (ในกรณีที่มีความสำคัญภาษาที่ฉันชอบคือ C # แต่ฉันสามารถเรียนรู้จากตัวอย่างในภาษาอื่นได้)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.