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

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

8
ในโครงการ PHP มีรูปแบบใดบ้างในการจัดเก็บเข้าถึงและจัดระเบียบวัตถุตัวช่วย [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ คุณจัดระเบียบและจัดการออบเจ็กต์ตัวช่วยของคุณเช่นเอ็นจิ้นฐานข้อมูลการแจ้งเตือนผู้ใช้การจัดการข้อผิดพลาดและอื่น ๆ ในโครงการเชิงวัตถุที่ใช้ PHP ได้อย่างไร สมมติว่าฉันมี PHP CMS ขนาดใหญ่ CMS จัดอยู่ในชั้นเรียนต่างๆ ตัวอย่างบางส่วน: วัตถุฐานข้อมูล การจัดการผู้ใช้ API เพื่อสร้าง / แก้ไข / ลบรายการ วัตถุส่งข้อความเพื่อแสดงข้อความไปยังผู้ใช้ปลายทาง ตัวจัดการบริบทที่นำคุณไปยังหน้าที่ถูกต้อง คลาสของแถบนำทางที่แสดงปุ่มต่างๆ วัตถุบันทึก อาจเป็นไปได้ว่าการจัดการข้อผิดพลาดแบบกำหนดเอง เป็นต้น ฉันกำลังเผชิญกับคำถามนิรันดร์วิธีทำให้วัตถุเหล่านี้สามารถเข้าถึงได้ดีที่สุดในแต่ละส่วนของระบบที่ต้องการ apporach แรกของฉันเมื่อหลายปีก่อนคือการมี $ application global ที่มีอินสแตนซ์เริ่มต้นของคลาสเหล่านี้ global $application; $application->messageHandler->addMessage("Item successfully inserted"); …
114 design-patterns  oop  php 

16
รูปแบบเพื่อหลีกเลี่ยงการลองจับบล็อกซ้อนกัน?
พิจารณาสถานการณ์ที่ฉันมีสามวิธี (หรือมากกว่า) ในการคำนวณซึ่งแต่ละวิธีอาจล้มเหลวโดยมีข้อยกเว้น ในการพยายามคำนวณแต่ละครั้งจนกว่าเราจะพบสิ่งที่สำเร็จฉันได้ดำเนินการดังต่อไปนี้: double val; try { val = calc1(); } catch (Calc1Exception e1) { try { val = calc2(); } catch (Calc2Exception e2) { try { val = calc3(); } catch (Calc3Exception e3) { throw new NoCalcsWorkedException(); } } } มีรูปแบบใดบ้างที่ได้รับการยอมรับซึ่งประสบความสำเร็จในวิธีที่ดีกว่านี้? แน่นอนว่าฉันสามารถสรุปการคำนวณแต่ละรายการด้วยวิธีตัวช่วยซึ่งส่งคืนค่าว่างเมื่อเกิดความล้มเหลวจากนั้นใช้ตัว??ดำเนินการ แต่มีวิธีการทำเช่นนี้โดยทั่วไปหรือไม่ (กล่าวคือโดยไม่ต้องเขียนวิธีการช่วยเหลือสำหรับแต่ละวิธีที่ฉันต้องการใช้ )? ฉันคิดเกี่ยวกับการเขียนวิธีการคงที่โดยใช้ชื่อสามัญซึ่งรวมวิธีการใด ๆ ในการลอง …

13
ทางเลือกอื่นของ Singleton คืออะไร
เรามีคลาสที่เก็บข้อมูลการกำหนดค่าสำหรับแอปพลิเคชัน ที่นี่เคยเป็นซิงเกิลตัน หลังจากการตรวจสอบสถาปัตยกรรมบางส่วนเราได้รับคำสั่งให้ลบซิงเกิลตันออก เราเห็นประโยชน์บางประการของการไม่ใช้ซิงเกิลตันในการทดสอบหน่วยเนื่องจากเราสามารถทดสอบการกำหนดค่าต่างๆพร้อมกันได้ หากไม่มีซิงเกิลตันเราต้องส่งอินสแตนซ์ไปทั่วทุกที่ในโค้ดของเรา มันยุ่งมากเราเลยเขียนเสื้อคลุมซิงเกิลตัน ตอนนี้เรากำลังย้ายรหัสเดียวกันไปยัง PHP และ. NET ฉันสงสัยว่ามีรูปแบบที่ดีกว่าที่เราสามารถใช้กับวัตถุกำหนดค่าได้หรือไม่

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

8
ดาวหางและ jQuery [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันได้ทำการวิจัยเกี่ยวกับการพุชเซิร์ฟเวอร์ด้วยจาวาสคริปต์และพบว่ามีความเห็นตรงกันว่าสิ่งที่ฉันกำลังมองหานั้นอยู่ในรูปแบบการออกแบบ "ดาวหาง" มีการใช้งานรูปแบบนี้ที่ดีบน jQuery หรือไม่? ถ้าไม่มีมีการนำรูปแบบนี้ไปใช้งานที่ดีหรือไม่? และโดยไม่คำนึงถึงคำตอบสำหรับคำถามเหล่านั้นมีเอกสารใด ๆ เกี่ยวกับรูปแบบนี้จากจุดยืนการนำไปใช้งานหรือไม่?

2
พร็อกซีในหลักคำสอน 2 คืออะไร?
ฉันเพิ่งอ่านเอกสารหลักคำสอน 2 ทั้งหมดเสร็จฉันเริ่ม Sandbox ของตัวเองฉันเข้าใจหลักการส่วนใหญ่แล้ว แต่ยังมีคำถามและฉันไม่พบคำอธิบายที่สมบูรณ์ในเอกสาร อะไรคือProxyการเรียน? เมื่อใดที่ฉันควรใช้กับเอนทิตี เท่าที่ฉันเข้าใจคลาสพร็อกซีจะเพิ่มเลเยอร์เพื่อให้คุณสามารถเพิ่มคุณสมบัติอื่น ๆ ให้กับเอนทิตีของคุณได้ แต่ทำไมต้องใช้พร็อกซีแทนที่จะใช้เมธอดในคลาสเอนทิตี

2
รูปแบบ Ruby on Rails - มัณฑนากรกับผู้นำเสนอ
ช่วงนี้มีการพูดคุยกันทุกประเภทในชุมชน Ruby on Rails เกี่ยวกับมัณฑนากรและผู้นำเสนอ อะไรคือความแตกต่างที่สำคัญระหว่างทั้งสอง? ถ้ามีอะไรคือเบาะแสที่บอกฉันว่าควรใช้อันไหนกับอีกอัน? หรืออาจจะใช้ทั้งสองร่วมกัน?

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

8
รูปแบบ OLOO ของ Kyle Simpson เทียบกับรูปแบบการออกแบบต้นแบบ
รูปแบบ "OLOO (Objects Link to Other Objects) ของ Kyle Simpson แตกต่างจากรูปแบบการออกแบบ Prototype หรือไม่ นอกเหนือจากการสร้างโดยสิ่งที่ระบุเฉพาะ "การเชื่อมโยง" (พฤติกรรมของต้นแบบ) และชี้แจงว่าไม่มีการ "คัดลอก" เกิดขึ้นที่นี่ (พฤติกรรมของคลาส) แล้วรูปแบบของเขาแนะนำอะไรกันแน่? นี่คือตัวอย่างรูปแบบของ Kyleจากหนังสือ "You Don't Know JS: this & Object Prototypes": var Foo = { init: function(who) { this.me = who; }, identify: function() { return "I am " + …

10
MVC เป็นรูปแบบการออกแบบหรือรูปแบบสถาปัตยกรรม
ตามที่SunและMsdnเป็นรูปแบบการออกแบบ ตามวิกิพีเดียเป็นรูปแบบสถาปัตยกรรม เมื่อเปรียบเทียบกับรูปแบบการออกแบบลวดลายสถาปัตยกรรมจะมีขนาดใหญ่กว่า (Wikipedia - รูปแบบสถาปัตยกรรม ) หรือเป็นรูปแบบสถาปัตยกรรมที่มีรูปแบบการออกแบบด้วย? อันไหนจริง?

16
อะไรคือความแตกต่างระหว่าง Facade และ Adapter Pattern?
ฉันอ่านคำจำกัดความทั้งสองคำมาแล้วและดูเหมือนจะค่อนข้างเหมือนกัน ใครช่วยชี้ให้เห็นว่าความแตกต่างของพวกเขาคืออะไร? ขอบคุณ

12
ออกแบบรูปแบบเพื่อหลีกเลี่ยง [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา หลายคนดูเหมือนจะเห็นด้วยว่ารูปแบบ Singleton มีข้อบกพร่องหลายประการและบางคนแนะนำให้หลีกเลี่ยงรูปแบบทั้งหมด มีความเป็นการอภิปรายที่ยอดเยี่ยมที่นี่ กรุณาแสดงความคิดเห็นเกี่ยวกับรูปแบบ Singleton สำหรับคำถามนั้น คำถามของฉัน : มีรูปแบบการออกแบบอื่น ๆ ที่ควรหลีกเลี่ยงหรือใช้อย่างระมัดระวังหรือไม่?

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

2
Hystrix ใช้ Bulkhead Pattern อะไร
Hystrix ซึ่งเป็น Netflix API สำหรับเวลาแฝงและความทนทานต่อข้อผิดพลาดในระบบกระจายที่ซับซ้อนใช้เทคนิคBulkhead Pattern สำหรับการแยกเธรด ใครช่วยอธิบายให้ละเอียดหน่อยได้ไหม

8
วิธีที่ดีที่สุดในการจัดระเบียบโค้ด jQuery / JavaScript (2013) [ปิด]
มันยากที่จะบอกว่ากำลังถามอะไรที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือมีวาทศิลป์และไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ปัญหา คำตอบนี้ได้รับคำตอบมาก่อน แต่เก่าและไม่ทันสมัย ฉันมีโค้ดมากกว่า 2,000 บรรทัดในไฟล์เดียวและอย่างที่เราทราบกันดีว่านี่เป็นการปฏิบัติที่ไม่ดีโดยเฉพาะอย่างยิ่งเมื่อฉันกำลังมองหาโค้ดหรือเพิ่มคุณสมบัติใหม่ ๆ ฉันต้องการจัดระเบียบรหัสของฉันให้ดีขึ้นทั้งในตอนนี้และในอนาคต ฉันควรพูดถึงว่าฉันกำลังสร้างเครื่องมือ (ไม่ใช่เว็บไซต์ธรรมดา ๆ ) ที่มีปุ่มมากมายองค์ประกอบ UI การลากวางผู้ฟัง / ตัวจัดการการกระทำและฟังก์ชันในขอบเขตทั่วโลกซึ่งผู้ฟังหลายคนอาจใช้ฟังก์ชันเดียวกัน ตัวอย่างรหัส $('#button1').on('click', function(e){ // Determined action. update_html(); }); ... // Around 75 more of this function update_html(){ .... } ... โค้ดตัวอย่างเพิ่มเติม สรุป ฉันจำเป็นต้องจัดระเบียบรหัสนี้เพื่อการใช้งานที่ดีที่สุดและไม่ต้องทำซ้ำตัวเองและสามารถเพิ่มคุณสมบัติใหม่และอัปเดตโค้ดเก่าได้ ฉันจะทำงานนี้ด้วยตัวเอง ตัวเลือกบางตัวสามารถเป็นโค้ดได้ 100 บรรทัดอื่น …

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