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

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

15
เหตุใด IoC / DI จึงไม่ธรรมดาใน Python
ใน Java IoC / DIเป็นวิธีปฏิบัติทั่วไปที่ใช้กันอย่างแพร่หลายในเว็บแอปพลิเคชันเกือบทุกเฟรมเวิร์กที่มีอยู่และ Java EE ในทางกลับกันมีเว็บแอพพลิเคชั่น Python ขนาดใหญ่จำนวนมาก แต่นอกเหนือจาก Zope (ซึ่งฉันได้ยินมาว่าน่ากลัวรหัส) IoC ดูเหมือนจะไม่ธรรมดาในโลก Python (โปรดระบุชื่อตัวอย่างถ้าคุณคิดว่าฉันผิด) มีแน่นอนหลายโคลนนิ่งนิยม Java IoC กรอบพร้อมใช้งานสำหรับหลามspringpythonตัวอย่างเช่น แต่ดูเหมือนว่าจะไม่มีใครใช้มันได้เลย อย่างน้อยฉันไม่เคยเหยียบย่ำแอปพลิเคชันบนเว็บDjangoหรือsqlalchemy + <insert your favorite wsgi toolkit here>ซึ่งใช้อะไรแบบนั้น ในความคิดของฉัน IoC มีข้อได้เปรียบที่สมเหตุสมผลและจะทำให้ง่ายต่อการแทนที่ django-default-user-model ตัวอย่างเช่น แต่การใช้อินเตอร์เฟซคลาสที่กว้างขวางและ IoC ใน Python นั้นค่อนข้างแปลกและไม่ใช่ "pythonic « แต่บางคนอาจมีคำอธิบายที่ดีกว่าทำไม IoC ไม่ได้ใช้อย่างกว้างขวางใน Python

15
รูปแบบการพึ่งพาการฉีดและการบริการค้นหาความแตกต่างคืออะไร
ทั้งสองรูปแบบดูเหมือนจะนำหลักการของการกลับมาควบคุม นั่นคือวัตถุไม่ควรรู้วิธีสร้างการพึ่งพา พึ่งพาการฉีด (DI) ดูเหมือนว่าจะใช้ตัวสร้างหรือ setter เพื่อ "ฉีด" มันขึ้นอยู่กับการพึ่งพา ตัวอย่างการใช้ Constructor Injection: //Foo Needs an IBar public class Foo { private IBar bar; public Foo(IBar bar) { this.bar = bar; } //... } ผู้ให้บริการดูเหมือนว่าจะใช้ "ภาชนะ" ซึ่งสายขึ้นอยู่กับการพึ่งพาและให้แถบมันเป็น foo ตัวอย่างการใช้ตัวระบุบริการ: //Foo Needs an IBar public class Foo { private IBar bar; public …


24
ซิงเกิล: ควรใช้อย่างไร
แก้ไข: จากคำถามอื่นฉันให้คำตอบที่มีลิงก์ไปยังคำถาม / คำตอบมากมายเกี่ยวกับซิงเกิล: ข้อมูลเพิ่มเติมเกี่ยวกับซิงเกิลที่นี่: ดังนั้นฉันได้อ่านหัวข้อSingletons: การออกแบบที่ดีหรือไม้ยันรักแร้? และการโต้เถียงยังคงโกรธ ฉันเห็นว่า Singletons เป็นรูปแบบการออกแบบ (ดีและไม่ดี) ปัญหาของ Singleton ไม่ใช่รูปแบบ แต่เป็นเรื่องของผู้ใช้ (ขออภัยทุกคน) ทุกคนและพ่อของพวกเขาคิดว่าพวกเขาสามารถใช้งานได้อย่างถูกต้อง (และจากการสัมภาษณ์มากมายที่ฉันทำคนส่วนใหญ่ไม่สามารถทำได้) นอกจากนี้เนื่องจากทุกคนคิดว่าพวกเขาสามารถใช้ซิงเกิลตันที่ถูกต้องพวกเขาใช้รูปแบบและใช้ในสถานการณ์ที่ไม่เหมาะสม (แทนที่ตัวแปรทั่วโลกด้วย Singletons!) ดังนั้นคำถามหลักที่ต้องตอบคือ: เมื่อใดที่คุณควรใช้ซิงเกิลตัน คุณใช้งานซิงเกิลตันได้อย่างไร ความหวังของฉันสำหรับบทความนี้คือเราสามารถรวบรวมเข้าด้วยกันในที่เดียว (แทนที่จะต้อง google และค้นหาหลาย ๆ ไซต์) แหล่งที่เชื่อถือได้เมื่อ (และวิธี) ในการใช้ Singleton อย่างถูกต้อง ที่เหมาะสมก็จะเป็นรายการต่อต้านการใช้งานและการใช้งานที่ไม่ดีทั่วไปอธิบายว่าทำไมพวกเขาล้มเหลวในการทำงานและสำหรับการใช้งานที่ดีจุดอ่อนของพวกเขา เพื่อให้ลูกบอลกลิ้ง: ฉันจะจับมือและพูดว่านี่คือสิ่งที่ฉันใช้ แต่อาจมีปัญหา ฉันชอบ "Scott Myers" ในการจัดการเรื่องในหนังสือของเขา "Effective C ++" สถานการณ์ที่ดีสำหรับการใช้ซิงเกิลตัน (ไม่มาก): กรอบการบันทึก …

6
รูปแบบการออกแบบฐานข้อมูลเชิงสัมพันธ์? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ รูปแบบการออกแบบมักจะเกี่ยวข้องกับการออกแบบเชิงวัตถุ มีรูปแบบการออกแบบสำหรับการสร้างและการเขียนโปรแกรมฐานข้อมูลเชิงสัมพันธ์หรือไม่? ปัญหามากมายแน่นอนต้องมีวิธีแก้ไขปัญหาที่นำมาใช้ใหม่ ตัวอย่างจะรวมถึงรูปแบบสำหรับการออกแบบตารางขั้นตอนการจัดเก็บทริกเกอร์ ฯลฯ ... มีพื้นที่เก็บข้อมูลออนไลน์ของรูปแบบดังกล่าวคล้ายกับmartinfowler.comหรือไม่ ตัวอย่างของปัญหาที่รูปแบบสามารถแก้ไขได้: การจัดเก็บข้อมูลแบบลำดับขั้น (เช่นตารางเดี่ยวที่มีประเภท vs หลายตารางพร้อมกับรหัส 1: 1 และความแตกต่าง ... ) การจัดเก็บข้อมูลด้วยโครงสร้างตัวแปร (เช่นคอลัมน์ทั่วไปเทียบกับ xml เทียบกับคอลัมน์ที่คั่นด้วย ... ) ล้างข้อมูลให้เป็นปกติ (จะทำอย่างไรกับผลกระทบน้อยที่สุด ฯลฯ ... )


2
รูปแบบพื้นที่เก็บข้อมูลทีละขั้นตอนคำอธิบาย [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ใครช่วยอธิบายแบบแผนพื้นที่เก็บข้อมูลใน NET ให้ฉันทีละขั้นตอนเป็นตัวอย่างหรือตัวอย่างที่ง่ายมาก ฉันรู้ว่านี่เป็นคำถามที่พบบ่อยมาก แต่จนถึงตอนนี้ฉันยังไม่พบคำตอบที่น่าพอใจ

12
รูปแบบสถาปัตยกรรมใดที่ใช้บน Android [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังทำการวิจัยขนาดเล็กของแพลตฟอร์มมือถือและฉันต้องการที่จะรู้ว่ารูปแบบการออกแบบที่ใช้ใน Android? เช่นใน iOS Model-view-controller ใช้กันอย่างแพร่หลายพร้อมกับการมอบหมายและรูปแบบอื่น ๆ รูปแบบใดที่ Android ใช้เป็นพิเศษ? แก้ไข ฉันไม่ได้ขอรูปแบบการออกแบบที่ใช้ในเคอร์เนล Dalvik และอื่น ๆ แต่เกี่ยวกับรูปแบบที่นักพัฒนาแอปพลิเคชันจะได้พบในขณะที่พัฒนาแอปพลิเคชัน


27
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะทำให้สุนัขเซทเทอร์กลับมา“ สิ่งนี้”?
เป็นความคิดที่ดีหรือไม่ดีที่จะทำให้ setters ใน java คืนค่า "this" หรือไม่? public Employee setName(String name){ this.name = name; return this; } รูปแบบนี้มีประโยชน์เพราะจากนั้นคุณสามารถโยงผู้ตั้งค่าเช่นนี้: list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!")); แทนสิ่งนี้: Employee e = new Employee(); e.setName("Jack Sparrow"); ...and so on... list.add(e); ... แต่มันขัดแย้งกับการประชุมมาตรฐาน ฉันคิดว่ามันอาจจะคุ้มค่าเพียงเพราะมันทำให้สุนัขตัวนั้นทำสิ่งอื่นที่มีประโยชน์ ฉันเคยเห็นรูปแบบนี้ใช้สถานที่บางแห่ง (เช่น JMock, JPA) แต่ดูเหมือนว่าผิดปกติและใช้โดยทั่วไปสำหรับ API ที่กำหนดไว้อย่างดีเท่านั้นซึ่งรูปแบบนี้มีการใช้ทุกที่ ปรับปรุง: สิ่งที่ฉันอธิบายไว้นั้นถูกต้อง แต่สิ่งที่ฉันกำลังมองหาจริงๆคือความคิดบางอย่างว่านี่เป็นสิ่งที่ยอมรับได้หรือไม่และหากมีข้อผิดพลาดหรือวิธีปฏิบัติที่ดีที่สุดที่เกี่ยวข้อง ฉันรู้เกี่ยวกับรูปแบบของตัวสร้าง แต่มีส่วนเกี่ยวข้องกับสิ่งที่ฉันกำลังอธิบายอยู่เล็กน้อยเนื่องจาก Josh Bloch …
249 java  design-patterns  api  oop 

12
มี Java หรือวิธีการเทียบเท่าสำหรับคำหลัก typedef ใน C ++ หรือไม่
มาจากพื้นหลัง C และ C ++ ฉันพบว่าการใช้ประโยชน์อย่างรอบคอบนั้นtypedefมีประโยชน์อย่างไม่น่าเชื่อ คุณรู้วิธีที่จะใช้ฟังก์ชันการทำงานที่คล้ายกันใน Java ไม่ว่าจะเป็นกลไก Java, รูปแบบ, หรือวิธีที่มีประสิทธิภาพอื่น ๆ ที่คุณใช้?
244 java  c++  c  design-patterns  typedef 

23
การจัดการกล่องโต้ตอบใน WPF ด้วย MVVM
ในรูปแบบ MVVM สำหรับ WPF การจัดการไดอะล็อกเป็นหนึ่งในการดำเนินการที่ซับซ้อนมากขึ้น เนื่องจากโมเดลการดูของคุณไม่ทราบอะไรเกี่ยวกับมุมมองการสื่อสารในกล่องโต้ตอบจึงน่าสนใจ ฉันสามารถแสดงให้เห็นICommandว่าเมื่อมุมมองเรียกมันโต้ตอบสามารถปรากฏขึ้น ไม่มีใครรู้วิธีที่ดีในการจัดการผลลัพธ์จากการโต้ตอบ? MessageBoxฉันกำลังพูดเกี่ยวกับหน้าต่างไดอะล็อกเช่น อีกวิธีหนึ่งที่เราทำคือมีเหตุการณ์ใน viewmodel ที่มุมมองจะสมัครเมื่อต้องการไดอะล็อก public event EventHandler<MyDeleteArgs> RequiresDeleteDialog; ไม่เป็นไร แต่หมายความว่ามุมมองต้องใช้รหัสซึ่งเป็นสิ่งที่ฉันต้องการหลีกเลี่ยง


18
รูปแบบการออกแบบกลยุทธ์และรูปแบบการออกแบบของรัฐแตกต่างกันอย่างไร
อะไรคือความแตกต่างระหว่างรูปแบบการออกแบบกลยุทธ์และรูปแบบการออกแบบของรัฐ? ฉันกำลังอ่านบทความไม่กี่เรื่องบนเว็บ แต่ไม่สามารถบอกความแตกต่างได้อย่างชัดเจน ใครช่วยอธิบายความแตกต่างในเงื่อนไขของคนธรรมดาได้มั้ย

10
ตำแหน่งที่จะวาง AutoMapper.CreateMaps?
ฉันใช้AutoMapperในASP.NET MVCการประยุกต์ใช้ ฉันบอกว่าฉันควรย้ายที่AutoMapper.CreateMapอื่นเพราะมีค่าใช้จ่ายมากมาย ฉันไม่แน่ใจว่าจะออกแบบแอปพลิเคชันของฉันให้วางสายเหล่านี้ได้ในที่เดียว ฉันมีชั้นเว็บชั้นบริการและชั้นข้อมูล แต่ละโครงการของตัวเอง ฉันใช้NinjectDI ทุกอย่าง ฉันจะใช้ประโยชน์จากAutoMapperทั้งเว็บและเลเยอร์บริการ ดังนั้นการตั้งค่าของคุณสำหรับAutoMapperCreateMap คืออะไร? คุณวางไว้ที่ไหน คุณจะเรียกมันว่าอย่างไร?

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