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

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

3
เมื่อใดควรใช้รูปแบบการออกแบบใด? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันชอบรูปแบบการออกแบบมาก แต่ฉันพบว่ามันยากที่จะเห็นเมื่อฉันสามารถนำไปใช้ ฉันได้อ่านเว็บไซต์จำนวนมากที่มีการอธิบายรูปแบบการออกแบบ ฉันเข้าใจมากที่สุด แต่ฉันพบว่ามันยากที่จะจดจำรูปแบบในสถานการณ์ของตัวเอง นั่นคือเหตุผลที่ฉันถามคำถามนี้ มีแนวทาง / ระฆังเตือนเมื่อใดควรใช้รูปแบบการออกแบบใด ตัวอย่างเช่นหากคุณกำลังทำคำสั่ง switch เพื่อพิจารณาว่าคุณต้องการสร้างวัตถุใดคุณอาจต้องการใช้รูปแบบการออกแบบจากโรงงาน ดังนั้นคำสั่งสวิตช์ในกรณีนี้คือ 'กระดิ่งเตือนภัย' เพื่อใช้รูปแบบโรงงาน คุณรู้จัก 'ระฆังปลุก' มากขึ้นเพื่อกำหนดรูปแบบการออกแบบหรือไม่?

14
ทำไม Active Record ทั้งหมดถึงเกลียดชัง? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ขณะที่ผมได้เรียนรู้มากขึ้นเกี่ยวกับ OOP และเริ่มต้นที่จะใช้รูปแบบการออกแบบต่างๆผมให้กลับมาที่กรณีที่มีผู้เกลียดActive Record บ่อยครั้งที่ผู้คนพูดว่ามันปรับขนาดได้ไม่ดี (โดยอ้างว่า Twitter เป็นตัวอย่างหลักของพวกเขา) - แต่ก็ไม่มีใครอธิบายได้ว่าทำไมมันถึงปรับขนาดได้ไม่ดี และ / หรือวิธีบรรลุข้อดีของ AR โดยไม่มีข้อเสีย (ผ่านรูปแบบที่คล้ายกัน แต่แตกต่างกัน?) หวังว่านี่จะไม่กลายเป็นสงครามศักดิ์สิทธิ์เกี่ยวกับรูปแบบการออกแบบ - ทั้งหมดที่ฉันอยากรู้คือ **** โดยเฉพาะ **** มีอะไรผิดปกติกับ Active Record ถ้ามันปรับขนาดได้ไม่ดีทำไมล่ะ? มันมีปัญหาอะไรอีก?

7
เหตุใดจึงใช้รูปแบบการเผยแพร่ / สมัครสมาชิก (ใน JS / jQuery)
ดังนั้นเพื่อนร่วมงานแนะนำฉันให้รู้จักกับรูปแบบการเผยแพร่ / สมัครสมาชิก (ใน JS / jQuery) แต่ฉันมีปัญหาในการจับใจความว่าทำไมจึงใช้รูปแบบนี้กับ JavaScript / jQuery 'ปกติ' ตัวอย่างเช่นก่อนหน้านี้ฉันมีรหัสต่อไปนี้ ... $container.on('click', '.remove_order', function(event) { event.preventDefault(); var orders = $(this).parents('form:first').find('div.order'); if (orders.length > 2) { orders.last().remove(); } }); และฉันจะได้เห็นบุญของการทำสิ่งนี้แทนเช่น ... removeOrder = function(orders) { if (orders.length > 2) { orders.last().remove(); } } $container.on('click', '.remove_order', function(event) { event.preventDefault(); …

15
รายการคำสั่ง if ใน Java แบบยาว
ขออภัยฉันไม่พบคำถามที่ตอบคำถามนี้ฉันเกือบจะแน่ใจว่ามีคนอื่นถามมาก่อน ปัญหาของฉันคือฉันกำลังเขียนไลบรารีระบบเพื่อเรียกใช้อุปกรณ์ฝังตัว ฉันมีคำสั่งที่สามารถส่งไปยังอุปกรณ์เหล่านี้ผ่านการออกอากาศทางวิทยุ สามารถทำได้โดยใช้ข้อความเท่านั้น ภายในไลบรารีระบบฉันมีเธรดที่จัดการคำสั่งที่มีลักษณะเช่นนี้ if (value.equals("A")) { doCommandA() } else if (value.equals("B")) { doCommandB() } else if etc. ปัญหาคือมีคำสั่งมากมายที่จะทำให้บางสิ่งบางอย่างควบคุมไม่ได้อย่างรวดเร็ว น่ากลัวที่จะมองออกเจ็บปวดกับการแก้ไขจุดบกพร่องและไม่สามารถเข้าใจได้ในเวลาไม่กี่เดือน

14
สถาปัตยกรรมของเว็บแอปพลิเคชัน JavaScript หน้าเดียว?
เว็บแอปพลิเคชัน JS แบบหน้าเดียวที่ซับซ้อนควรมีโครงสร้างอย่างไรในฝั่งไคลเอ็นต์ โดยเฉพาะอย่างยิ่งฉันอยากรู้เกี่ยวกับวิธีการจัดโครงสร้างแอปพลิเคชันอย่างหมดจดในแง่ของโมเดลอ็อบเจ็กต์ส่วนประกอบ UI คอนโทรลเลอร์และอ็อบเจ็กต์ที่จัดการกับความคงอยู่ของเซิร์ฟเวอร์ MVC ดูเหมือนจะพอดีในตอนแรก แต่ด้วยองค์ประกอบ UI ที่ซ้อนกันในระดับความลึกต่างๆ (แต่ละส่วนมีวิธีดำเนินการ / ตอบสนองต่อข้อมูลแบบจำลองของตนเองและแต่ละเหตุการณ์ที่สร้างขึ้นซึ่งพวกเขาเองอาจจัดการหรือไม่สามารถจัดการได้โดยตรง) ดูเหมือนว่า MVC จะไม่สามารถใช้งานได้อย่างหมดจด (แต่โปรดแก้ไขฉันหากไม่เป็นเช่นนั้น) - ( คำถามนี้ส่งผลให้มีคำแนะนำสองข้อในการใช้ ajax ซึ่งจำเป็นอย่างยิ่งสำหรับสิ่งอื่นนอกเหนือจากแอปหน้าเดียวที่ไม่สำคัญที่สุด)


6
ASP.NET MVC - ตรรกะทางธุรกิจควรมีอยู่ในคอนโทรลเลอร์หรือไม่
Derik Whitaker โพสต์บทความเมื่อสองสามวันก่อนซึ่งเป็นประเด็นที่ฉันสงสัยมาระยะหนึ่งแล้ว: ตรรกะทางธุรกิจควรมีอยู่ในคอนโทรลเลอร์หรือไม่? จนถึงตอนนี้การสาธิต ASP.NET MVC ทั้งหมดที่ฉันเคยเห็นใส่การเข้าถึงที่เก็บและตรรกะทางธุรกิจในคอนโทรลเลอร์ บางคนยังโยนการตรวจสอบความถูกต้องไว้ที่นั่นด้วย ส่งผลให้ตัวควบคุมป่องค่อนข้างใหญ่ นี่คือวิธีการใช้ MVC framework จริงๆหรือ? ดูเหมือนว่าสิ่งนี้จะจบลงด้วยรหัสและตรรกะที่ซ้ำกันจำนวนมากที่กระจายออกไปตามคอนโทรลเลอร์ต่างๆ

9
รูปแบบ Singleton ใน nodejs - จำเป็นหรือไม่?
ฉันเพิ่งเจอบทความนี้เกี่ยวกับวิธีการเขียนซิงเกิลตันใน Node.js ฉันรู้เอกสารของrequire รัฐที่: โมดูลจะถูกแคชไว้หลังจากโหลดครั้งแรก การโทรหลายครั้งrequire('foo')อาจไม่ทำให้โค้ดโมดูลถูกเรียกใช้งานหลายครั้ง ดังนั้นดูเหมือนว่าทุกโมดูลที่จำเป็นสามารถใช้เป็นซิงเกิลตันได้อย่างง่ายดายโดยไม่ต้องใช้รหัสสำเร็จรูปแบบซิงเกิลตัน คำถาม: บทความข้างต้นให้ข้อมูลเกี่ยวกับวิธีการสร้างซิงเกิลตันหรือไม่?

14
ชั้นเรียนยูทิลิตี้เป็นสิ่งชั่วร้าย? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบพร้อมข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เห็นกระทู้นี้แล้ว หากคลาส "ยูทิลิตี้" ชั่วร้ายฉันจะใส่รหัสทั่วไปของฉันได้ที่ไหน และคิดว่าทำไมคลาสยูทิลิตี้ถึงชั่วร้าย? สมมติว่าฉันมีโมเดลโดเมนที่ลึกหลายสิบชั้น ฉันต้องการอินสแตนซ์ xml-ify ได้ ฉันสร้างเมธอด toXml บนพาเรนต์หรือไม่ ฉันสร้างคลาสตัวช่วย MyDomainXmlUtility.toXml หรือไม่ นี่เป็นกรณีที่ธุรกิจต้องการครอบคลุมทั้งรูปแบบโดเมนจริง ๆ แล้วเป็นวิธีการอินสแตนซ์หรือไม่ จะเกิดอะไรขึ้นถ้ามีวิธีการเสริมมากมายในฟังก์ชัน xml ของแอปพลิเคชัน?

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

9
อะไรคือความแตกต่างระหว่าง Strategy Pattern และ Dependency Injection?
รูปแบบกลยุทธ์และ Dependency Injection ช่วยให้เราสามารถตั้งค่า / ฉีดวัตถุในขณะทำงานได้ อะไรคือความแตกต่างระหว่าง Strategy Pattern และ Dependency Injection?

9
ไม่ใช้รูปแบบพื้นที่เก็บข้อมูลให้ใช้ ORM ตามที่เป็น (EF)
ฉันใช้รูปแบบพื้นที่เก็บข้อมูลเสมอ แต่สำหรับโปรเจ็กต์ล่าสุดของฉันฉันต้องการดูว่าฉันสามารถใช้มันได้อย่างสมบูรณ์แบบหรือไม่และการนำ "หน่วยงาน" ไปใช้หรือไม่ ยิ่งฉันเริ่มขุดมากขึ้นฉันก็เริ่มถามตัวเองว่า"ฉันต้องการมันจริงๆหรือ" ตอนนี้ทั้งหมดนี้เริ่มต้นด้วยความคิดเห็นสองสามรายการใน Stackoverflow พร้อมติดตามโพสต์ของ Ayende Rahien ในบล็อกของเขาโดยมี 2 ข้อความที่เจาะจง ที่เก็บคือสิ่งใหม่ - ซิงเกิลตัน ask-ayende-life-without-repositories-are-they-worth-living สิ่งนี้อาจถูกพูดถึงตลอดไปและตลอดไปและขึ้นอยู่กับการใช้งานที่แตกต่างกัน ฉันอยากรู้อะไร แนวทางนี้จะเหมาะกับโครงการ Entity Framework หรือไม่ การใช้วิธีนี้เป็นตรรกะทางธุรกิจที่ยังคงอยู่ในชั้นบริการหรือวิธีการขยาย (ตามที่อธิบายไว้ด้านล่างฉันรู้วิธีการขยายกำลังใช้เซสชัน NHib) ทำได้อย่างง่ายดายโดยใช้วิธีการขยาย สะอาดเรียบง่ายและใช้ซ้ำได้ public static IEnumerable GetAll( this ISession instance, Expression<Func<T, bool>> where) where T : class { return instance.QueryOver().Where(where).List(); } การใช้แนวทางนี้และNinjectในฐานะ DI ฉันจำเป็นต้องสร้างContextอินเทอร์เฟซและฉีดเข้าไปในคอนโทรลเลอร์ของฉันหรือไม่

8
Mediator Vs Observer รูปแบบการออกแบบเชิงวัตถุ
ฉันอ่านGang Of Fourเพื่อที่จะแก้ปัญหาบางอย่างของฉันและเจอรูปแบบคนกลาง ก่อนหน้านี้ฉันใช้Observerในโครงการของฉันเพื่อสร้างแอปพลิเคชัน GUI ฉันสับสนเล็กน้อยเพราะฉันไม่พบความแตกต่างระหว่างสองอย่างนี้ ฉันเรียกดูเพื่อค้นหาความแตกต่าง แต่ไม่พบคำตอบที่เหมาะสมสำหรับคำถามของฉัน มีใครช่วยฉันแยกความแตกต่างระหว่างสองอย่างด้วยตัวอย่างที่ดีที่แบ่งเขตทั้งสองอย่างชัดเจนได้ไหม

17
รูปแบบโรงงานใน C #: จะแน่ใจได้อย่างไรว่าอินสแตนซ์ออบเจ็กต์สามารถสร้างได้โดยคลาสโรงงานเท่านั้น
เมื่อเร็ว ๆ นี้ฉันคิดเกี่ยวกับการรักษาความปลอดภัยของรหัสของฉัน ฉันอยากรู้ว่าเราจะแน่ใจได้อย่างไรว่าจะไม่สามารถสร้างวัตถุได้โดยตรง แต่ด้วยวิธีการบางอย่างของคลาสโรงงานเท่านั้น สมมติว่าฉันมีคลาส "วัตถุทางธุรกิจ" และฉันต้องการตรวจสอบให้แน่ใจว่าอินสแตนซ์ใด ๆ ของคลาสนี้จะมีสถานะภายในที่ถูกต้อง เพื่อให้บรรลุสิ่งนี้ฉันจะต้องทำการตรวจสอบบางอย่างก่อนที่จะสร้างวัตถุอาจอยู่ในตัวสร้าง ทั้งหมดนี้ไม่เป็นไรจนกว่าฉันจะตัดสินใจว่าต้องการให้การตรวจสอบนี้เป็นส่วนหนึ่งของตรรกะทางธุรกิจ ดังนั้นฉันจะจัดให้ออบเจ็กต์ทางธุรกิจสามารถสร้างได้โดยใช้วิธีการบางอย่างในคลาสตรรกะทางธุรกิจของฉัน แต่ไม่สามารถสร้างได้โดยตรงได้อย่างไร ความปรารถนาแรกตามธรรมชาติที่จะใช้คีย์เวิร์ด "เพื่อน" เก่าที่ดีของ C ++ จะขาดหายไปกับ C # ดังนั้นเราจึงต้องการทางเลือกอื่น ... ลองดูตัวอย่าง: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public …

7
เหตุใดจึงใช้ซิงเกิลตันแทนวิธีการคงที่
ฉันไม่เคยพบคำตอบที่ดีสำหรับคำถามง่ายๆเหล่านี้เกี่ยวกับคลาสตัวช่วย / ยูทิลิตี้: เหตุใดฉันจึงต้องสร้างซิงเกิลตัน (ไร้สัญชาติ) แทนที่จะใช้วิธีการแบบคงที่ เหตุใดจึงจำเป็นต้องใช้อินสแตนซ์วัตถุหากวัตถุไม่มีสถานะ

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