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

รูปแบบการออกแบบเป็นโซลูชันที่ใช้ซ้ำได้ทั่วไปสำหรับปัญหาที่เกิดขึ้นทั่วไปในการออกแบบซอฟต์แวร์

4
สถาปัตยกรรมซอฟต์แวร์ขึ้นอยู่กับภาษาเป็นจำนวนเท่าใด
ในขณะที่การให้ความรู้กับตัวเองเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์และรูปแบบการออกแบบฉันสังเกตว่าในกรณีส่วนใหญ่คุณลักษณะของภาษาและการออกแบบเฉพาะนั้นมีความหมายโดยนัยในคำอธิบาย เช่นในทางปฏิบัติบทความหรือหนังสือเล่มใด ๆ ที่จะแสดงความคิดเห็นโดยใช้คลาสและอินเทอร์เฟซ ทุกสิ่งที่เราสามารถหาได้ง่ายในหัวข้อนี้จะพูดถึงวัตถุและแนวคิดของ OOP เกิดอะไรขึ้นถ้าภาษาที่ระบบเขียนไม่มีแนวคิดดังกล่าวเลย? เช่นจะทำอย่างไรถ้าฉันใช้ Python หรือ Node ซึ่งพิมพ์แบบไดนามิกและไม่มีแนวคิดเกี่ยวกับอินเตอร์เฟส ถ้าฉันใช้ TypeScript โดยที่อินเตอร์เฟสเป็นโครงสร้างชั่วคราวซึ่งไม่มีอยู่ในรันไทม์? ถ้าฉันพยายามยอมรับการเขียนโปรแกรมที่ใช้งานได้ ฉันควรละเว้นเช่น SOLID และมองหาแนวคิดอื่น ๆ ที่เหมาะสมกับภาษาของฉันหรือไม่ ถ้าใช่มันคืออะไร น่าเสียดายที่กระบวนทัศน์ที่เป็นที่ยอมรับทั้งหมด (เท่าที่ฉันทราบ) อ้างถึงแนวคิดและประเภทของ OOP ในบางวิธี ถ้าไม่ฉันควรปฏิบัติตามกฎใดเมื่อปรับสถาปัตยกรรมทั่วไปและหลักการออกแบบเป็นภาษาและกรณีใช้ของฉัน โดยทั่วไปแล้วคุณจะอธิบายการพึ่งพาระหว่างสถาปัตยกรรมและภาษาอย่างไร

4
วิธีจัดการกับวิธีการที่ถูกเพิ่มเข้ามาสำหรับชนิดย่อยในบริบทของความหลากหลาย?
เมื่อคุณใช้แนวคิดของความหลากหลายที่คุณสร้างลำดับชั้นของชั้นเรียนและใช้การอ้างอิงผู้ปกครองที่คุณเรียกใช้ฟังก์ชั่นอินเทอร์เฟซโดยไม่ทราบว่าชนิดที่เฉพาะเจาะจงมีวัตถุ มันเยี่ยมมาก ตัวอย่าง: คุณมีคอลเลคชั่นสัตว์และเรียกร้องให้สัตว์ทุกตัวทำงานeatและคุณไม่สนใจว่ามันจะกินสุนัขหรือแมว แต่ในลำดับชั้นเดียวกับที่คุณมีสัตว์ที่มีเพิ่มเติม - อื่น ๆ กว่าสืบทอดและดำเนินการจากชั้นเรียนAnimalเช่นmakeEggs, getBackFromTheFreezedStateและอื่น ๆ ดังนั้นในบางกรณีในการทำงานของคุณคุณอาจต้องการทราบประเภทเฉพาะเพื่อเรียกใช้พฤติกรรมเพิ่มเติม ยกตัวอย่างเช่นในกรณีที่มันเป็นช่วงเวลาเช้าและถ้ามันเป็นเพียงสัตว์แล้วคุณเรียกeatมิฉะนั้นถ้ามันเป็นมนุษย์แล้วโทรครั้งแรกwashHands, และเพียงแล้วโทรgetDressed eatวิธีจัดการกรณีนี้? ความแตกต่างตาย คุณจำเป็นต้องค้นหาประเภทของวัตถุซึ่งฟังดูมีกลิ่นรหัส มีวิธีการทั่วไปในการจัดการกรณีนี้หรือไม่?

1
รูปแบบ“ function return function” มีชื่อใน JavaScript หรือไม่?
ฉันใช้รูปแบบนี้ค่อนข้างบ่อยใน JavaScript นี่คือตัวอย่าง: const comments = [ { text: 'Hello', id: 1 }, { text: 'World', id: 4 }, ]; const byId = id => element => element.id === id; const comment = comments.find(byId(1)); บางครั้งรูปแบบนี้สามารถทำให้โค้ดของเราสามารถอ่านได้และเป็นโมดูล รูปแบบนี้เรียกว่าอะไร?

7
วิธีการพิสูจน์ตัวตนผู้ใช้จากแอปพลิเคชันไคลเอนต์
ฉันพัฒนาแอพพลิเคชั่นซึ่งจะรองรับผู้ใช้หลายคน สิ่งที่ฉันไม่สามารถคิดออกวิธีการตรวจสอบลูกค้า / ผู้ใช้ ฉันกำลังสร้างแอพอย่างhttp://quickblox.com/ที่ฉันจะให้ข้อมูลประจำตัวแก่ผู้ใช้ของฉันและพวกเขาจะใช้แอปเหล่านี้เพื่อสร้างแอปพลิเคชั่นNที่พวกเขาไม่สามารถใส่ชื่อผู้ใช้และรหัสผ่านเพื่อรับรองความถูกต้อง สมมติว่ามันเป็นไปตาม(เหมือน QuickBlox) 1. ผู้ใช้สร้างบัญชีในเว็บไซต์ของฉัน 2. ผู้ใช้สามารถสร้างคีย์ N API และข้อมูลรับรองความลับ (สำหรับหลายแอพ) 3. ผู้ใช้จะใช้ข้อมูลรับรองเหล่านี้ในแอปพลิเคชัน (Android, iOS, Javascript ฯลฯ ... ) เพื่อพูดคุยกับ REST API ของฉัน (REST API มีการเข้าถึงแบบอ่านและเขียน) ความกังวลของฉัน? ผู้ใช้จะใส่ข้อมูลประจำตัว (คีย์ API และคีย์หลั่ง) ในแอปพลิเคชันที่พวกเขาสร้างจะเกิดอะไรขึ้นถ้ามีคนรับคีย์เหล่านี้และพยายามเลียนแบบผู้ใช้ (โดยการแยกข้อมูล APK หรือดูโค้ด JavaScript โดยตรง ฉันผิดตรงไหนเหรอ? ฉันสับสนในการออกแบบกลไกผู้ใช้สามระดับนี้

4
รูปแบบสำหรับอัลกอริทึมที่แสดงคำอธิบายถึงวิธีการแก้ปัญหาเมื่อจำเป็น
สถานการณ์ต่อไปนี้เกิดขึ้นกับฉันหลายครั้ง ฉันตั้งโปรแกรมอัลกอริทึมที่แก้ปัญหาบางอย่าง มันทำงานได้ดีและค้นหาวิธีแก้ไขที่ถูกต้อง ตอนนี้ฉันต้องการมีตัวเลือกในการบอกอัลกอริทึม "เขียนคำอธิบายโดยละเอียดเกี่ยวกับวิธีการแก้ปัญหา" เป้าหมายของฉันคือสามารถใช้อัลกอริทึมในการสาธิตออนไลน์ชั้นเรียนกวดวิชาและอื่น ๆ ฉันยังต้องการมีตัวเลือกในการเรียกใช้อัลกอริทึมแบบเรียลไทม์โดยไม่มีคำอธิบาย รูปแบบการออกแบบที่ดีที่จะใช้คืออะไร? ตัวอย่าง: สมมติว่าผมใช้วิธีนี้ในการหาตัวหารร่วมมาก วิธีที่ใช้ในปัจจุบันส่งกลับคำตอบที่ถูกต้อง แต่ไม่มีคำอธิบาย ฉันต้องการมีตัวเลือกสำหรับวิธีการอธิบายการกระทำของมันเช่น: Initially, a=6 and b=4. The number of 2-factors, d, is initialized to 0. a and b are both even, so we divide them by 2 and increment d by 1. Now, a=3 and b=2. a is …

4
รูปแบบความรับผิดชอบเดี่ยวควรมีรูปแบบเฉพาะสำหรับชั้นเรียนอย่างไร
ตัวอย่างเช่นสมมติว่าคุณมีโปรแกรมเกมคอนโซลซึ่งมีวิธีอินพุต / เอาต์พุตทุกชนิดเข้าและออกจากคอนโซล มันจะเป็นสมาร์ทเพื่อให้พวกเขาทั้งหมดในครั้งเดียวinputOutputชั้นเรียนหรือทำลายพวกเขาลงไปเรียนที่เฉพาะเจาะจงมากขึ้นเช่นstartMenuIO, inGameIO, playerIO, gameBoardIOฯลฯ ดังกล่าวว่าแต่ละชั้นจะมีประมาณ 1-5 วิธี? และเมื่อทราบเหมือนกันถ้ามันจะดีกว่าที่จะทำลายพวกเขาลงมันจะเป็นสมาร์ทที่จะวางไว้ในIOnamespace จึงทำให้เรียกพวกเขาเล็ก ๆ น้อย ๆ มากขึ้นอย่างละเอียดเช่น: IO.inGameฯลฯ ?

4
การออกแบบรุ่นที่เหมาะสม - ดู -_____
ฉันได้อ่านเกี่ยวกับ Model View Controller, Model View Presenter, Model View ViewModel เป็นต้นโดยทั่วไปแนวคิดพื้นฐานดูเหมือนจะเข้าใจง่าย: เก็บภาพที่สวยงามและความกล้าหาญทางวิทยาศาสตร์แยกจากกันและงมงายเป็น เป็นไปได้ ไม่ได้รับเนยถั่วลิสงในการออกแบบช็อคโกแลต; ฉันชอบมัน ปัญหาคือฉันยังคงคลุมเครือเล็กน้อยในส่วนที่สามนั่นคือ ... ไม่ใช่โมเดลหรือมุมมอง ทุกคนดูเหมือนจะมีความคิดของตัวเองว่าจะเรียกมันว่าอะไรควรทำอะไรเหมาะสมอะไรผิดปกติธรรมดา ... และฉันจะพยายามคิดออกเมื่อผู้นำเสนอกลายเป็น ViewModel และเมื่อมุมมองไม่ควร ' อย่าทำอย่างนั้นเพราะนั่นคืองานของผู้นำเสนอและ - ฉันเที่ยว แทนที่จะขอให้ใครบางคนอธิบายความแตกต่างระหว่างพวกเขา - เพราะมันทำมาแล้วครั้งแล้วครั้งเล่า (ฉันรู้ว่าฉันอ่านบทความมากกว่าที่ฉันสามารถนับได้) - ฉันอยากรู้อยากเห็นความคิดของ โปรแกรมเมอร์เพียงไม่กี่คนในแบบจำลองที่ฉันได้เดินด้วยกัน ที่กล่าวว่าสิ่งที่คุณจะจัดประเภทการออกแบบนี้และที่สำคัญกว่าคุณเห็นอะไรเกี่ยวกับเรื่องนี้ที่ชัดดูด? แน่นอนว่าฉันชอบที่จะได้ยินว่าฉันทำได้ดีถ้านี่คือการออกแบบที่มั่นคงอย่างแท้จริง แต่ฉันอยากได้รับคำแนะนำที่หนักแน่นมากกว่าการชม หมายเหตุ: ฉันจะใช้ "the Bridge" สำหรับส่วนที่สามอันลึกลับของ Model-View-? เพื่อหลีกเลี่ยงคำแนะนำจิตใต้สำนึกของสิ่งที่ "ควร" เป็น แบบ เป็นสิทธิของข้อมูล รับข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่ร้องขอจาก Bridge …

4
เป็นไปได้หรือไม่ที่จะรวมแอพพลิเคชั่นเข้ากับกรอบอย่างหลวม ๆ ?
สมมติว่าฉันกำลังพัฒนาเว็บแอปพลิเคชัน ตัวเลือกแรกของฉันคือใช้ PHP กับ Fat-Free Framework (F3) และรูปแบบ MVC ปีหน้าฉันอาจตัดสินใจว่าอยากเปลี่ยนเป็น Zend Framework หรืออาจเป็น ASP.NET MVC ก็ได้ มันสมเหตุสมผลหรือไม่ที่จะลองและออกแบบแอปพลิเคชันของฉันในลักษณะที่มันเชื่อมโยงกับกรอบอย่างหลวม ๆ หรือเป็นกรอบที่สำคัญเกินไปที่จะทำให้สิ่งนี้เป็นจริงหรือไม่? เหตุผลเดียวที่ฉันถามคือเพราะมันเกิดขึ้นในการสนทนากับเพียร์เมื่อเร็ว ๆ นี้ที่วิพากษ์วิจารณ์พายของฉันในความคิดที่ท้องฟ้าของการมีเพศสัมพันธ์อย่างหลวม ๆ ใบสมัครของฉันเพื่อ F3

4
รูปแบบการออกแบบสำหรับการนำเข้าข้อมูลของแหล่งข้อมูลประเภทต่าง ๆ และไปยังประเภทปลายทางต่างๆ
ฉันต้องออกแบบและสร้างสคริปต์นำเข้า (ใน C #) ที่สามารถจัดการต่อไปนี้: อ่านข้อมูลจากแหล่งต่าง ๆ (XML, XSLX, CSV) ตรวจสอบข้อมูล เขียนข้อมูลไปยังวัตถุประเภทต่าง ๆ (ลูกค้าที่อยู่) ข้อมูลจะมาจากแหล่งที่มาจำนวนหนึ่ง แต่แหล่งที่มาจะมีรูปแบบการนำเข้าหนึ่งรูปแบบเสมอ (เช่น csv, xml, xslx) รูปแบบการนำเข้าอาจแตกต่างกันไปตามแหล่งที่มา รูปแบบการนำเข้าใหม่อาจถูกเพิ่มในอนาคต ประเภทวัตถุปลายทางจะเหมือนกันเสมอ (ลูกค้าที่อยู่และอื่น ๆ ) ฉันกำลังคิดเกี่ยวกับการใช้ยาชื่อสามัญและฉันอ่านบางอย่างเกี่ยวกับรูปแบบของโรงงาน แต่ฉันเป็น noob ที่ค่อนข้างใหญ่ในพื้นที่นี้ รูปแบบการออกแบบที่เหมาะสมในการแก้ไขปัญหานี้คืออะไร

2
วิธีการสร้างเว็บไซต์ ASP.NET MVC แบบแยกส่วน
ฉันอยู่ในขั้นตอนการวางแผนสำหรับระบบอินทราเน็ตของพนักงานที่จะสร้างด้วย ASP.NET MVC 4 เราต้องการให้ไซต์ประกอบด้วย "โมดูล" แยกจากกันซึ่งแต่ละอันมีคุณสมบัติที่แตกต่างกัน: การส่งข้อความการเปลี่ยนแปลงเงินเดือน ฯลฯ ฉันต้องการให้โมดูลเหล่านี้สามารถเปิดใช้งานหรือปิดใช้งานในเวลารวบรวม หน้าแรกจะแสดงการนำทางบางประเภทที่จะเชื่อมโยงไปยังแต่ละโมดูลที่โหลด มันเป็นเรื่องง่ายจนถึงตอนนี้ แต่ฉันไม่ต้องการคุณลักษณะการนำทางที่ต้องรู้เกี่ยวกับโมดูลล่วงหน้า กล่าวอีกนัยหนึ่งฉันต้องการให้โมดูลค้นพบแบบไดนามิก; ฉันต้องการที่จะสามารถเขียนรหัสสำหรับโมดูลใหม่แล้วมีลิงค์เพิ่มไปยังแถบนำทางโดยไม่มีการเปลี่ยนแปลงรหัสใด ๆ ในแหล่งที่มา แต่ละโมดูลควรมีวิธีการลงทะเบียนด้วยแถบการนำทางและที่สำคัญกว่านี้ควรทำสำหรับแต่ละโมดูลเมื่อโหลด ฉันเชื่อว่าสิ่งนี้จะขัดขวางการใช้พื้นที่ของ MVC เนื่องจากสิ่งเหล่านี้ได้รับการออกแบบมาสำหรับกรณีที่รู้จักเค้าโครงของไซต์ไว้ล่วงหน้า MEF ดูเหมือนว่าอาจจะเหมาะสมแม้ว่าคนดูเหมือนจะประสบความสำเร็จในการรวม MEF กับ MVC MEF เป็นวิธีที่จะไปที่นี่จริง ๆ หรือมีวิธีที่ดีกว่าในการบรรลุสิ่งที่ฉันต้องการหรือไม่?

1
เราใช้รูปแบบพื้นที่เก็บข้อมูลใช่มั้ย
เรากำลังใช้คลาสที่แยกจากกัน-repositoryเพื่อต่อท้ายเรียกข้อมูลจากฐานข้อมูล สำหรับแต่ละตารางที่เก็บของตนเอง ตัวอย่างเช่นเรามีcustomerrepositoryคลาสที่มีวิธีการทุกอย่างเพื่อดึงลูกค้าและvacancyrepositoryที่มีวิธีการทุกชนิดเพื่อดึงตำแหน่งที่ว่าง ฉันมีคำถามสองข้อเกี่ยวกับวิธีการทำสิ่งนี้: วิธีรับข้อมูลที่ครอบคลุมหลายตาราง ตัวอย่างเช่นฉันมีหน้าจอที่แสดงลูกค้าทั้งหมดที่ยังไม่ได้สร้างตำแหน่งว่าง ที่สามารถcustomerrepositoryใช้วิธีการจากvacancyrespositoryหรือทำทั้งสองอย่างที่เก็บกลับผลลัพธ์และจะมีระดับที่สูงขึ้นในลำดับชั้น (ชื่อให้ของมันdataservice) ที่ได้รับผลจากทั้งเก็บและรวมเป็น 1 ผล? พื้นที่เก็บข้อมูลสามารถจัดการตรรกะได้เท่าใด ฉันคิดว่ามันโอเคที่จะใช้ 'where active == true' ในที่เก็บเพื่อเรียกใช้เฉพาะเร็กคอร์ดที่ใช้งานอยู่หรือว่าควรจัดการตรรกะง่ายๆโดยคลาสที่สูงกว่าในลำดับชั้น (ลองตั้งชื่อ a dataservice)? ตัวอย่างที่ฉันพบตอนนี้ก็คืออันนี้: เรามีรายการคำถามซึ่งมีหนึ่งคำถามขึ้นไป คำถามสามารถมีผลลัพธ์ซึ่งถืออยู่ในตารางแยกต่างหาก ดังนั้นเมื่อคุณต้องการดึงผลลัพธ์รวมของรายการคำถามคุณต้องรวมข้อมูลจากquestionlistตารางตารางคำถามและquestionstatusตาราง ตอนนี้เรามีที่เก็บข้อมูล 3 แห่งสำหรับตารางเหล่านี้ ถ้าฉันจะถามquestionlistrepositoryสิ่งที่เป็นผลรวมสำหรับรายการหมายเลข 12 มันจะต้องได้รับข้อมูลจากสองที่เก็บอื่น ๆ และด้วยเหตุนี้มีตรรกะบางอย่างในนั้นที่ได้รับอนุญาต? หรือมีquestionlistdataserviceที่รู้ที่เก็บที่จะใช้? อีกอย่างหนึ่ง: ที่เก็บข้อมูลของเราสามารถส่งผลIQueryableให้บริการโทรศัพท์สามารถรวมผลลัพธ์ได้อย่างง่ายดาย แต่ถ้าเป็นกรณีนี้ฉันไม่คิดว่ามันเป็นความคิดที่ดีที่จะดึงเนื้อหาทั้งหมดของตารางทั้งสามจาก ฐานข้อมูล

4
รวมวิธีการแม่แบบกับกลยุทธ์
การมอบหมายในวิชาวิศวกรรมซอฟต์แวร์ของฉันคือการออกแบบแอพพลิเคชั่นที่สามารถเล่นเกมในรูปแบบที่แตกต่างกันได้ เกมดังกล่าวคือ Mancala เกมเหล่านี้บางเกมเรียกว่า Wari หรือ Kalah เกมเหล่านี้แตกต่างกันไปในบางแง่มุม แต่สำหรับคำถามของฉันเป็นสิ่งสำคัญที่ต้องรู้ว่าเกมดังกล่าวอาจแตกต่างกันดังต่อไปนี้: วิธีการจัดการผลลัพธ์ของการย้าย วิธีการกำหนดจุดสิ้นสุดของเกม วิธีการตัดสินผู้ชนะ สิ่งแรกที่ฉันนึกถึงในการออกแบบสิ่งนี้คือการใช้รูปแบบกลยุทธ์ฉันมีการเปลี่ยนแปลงในอัลกอริทึม (กฎที่แท้จริงของเกม) การออกแบบอาจมีลักษณะเช่นนี้: จากนั้นฉันก็คิดกับตัวเองว่าในเกมของ Mancala และ Wari วิธีที่ผู้ชนะได้รับการตัดสินนั้นเหมือนกันและรหัสจะซ้ำกัน ฉันไม่คิดว่านี่เป็นคำจำกัดความที่ละเมิดหลักการ 'หนึ่งกฎที่เดียว' หรือหลักการของ DRY ที่เห็นว่าเป็นการเปลี่ยนแปลงในกฎสำหรับ Mancala ไม่ได้หมายความว่าจะต้องเปลี่ยนกฎใน Wari โดยอัตโนมัติเช่นกัน อย่างไรก็ตามจากข้อเสนอแนะที่ฉันได้รับจากอาจารย์ของฉันฉันได้รับความประทับใจในการค้นหาการออกแบบที่แตกต่าง ฉันมากับสิ่งนี้: แต่ละเกม (Mancala, Wari, Kalah, ... ) จะมีคุณลักษณะของประเภทของส่วนต่อประสานของกฏแต่ละตัวเช่นWinnerDeterminerหากมีรุ่น Mancala 2.0 ซึ่งเหมือนกับ Mancala 1.0 ยกเว้นว่าผู้ชนะจะตัดสินได้อย่างไร ใช้รุ่น Mancala ฉันคิดว่าการใช้กฎเหล่านี้เป็นรูปแบบกลยุทธ์นั้นใช้ได้อย่างแน่นอน แต่ปัญหาที่แท้จริงเกิดขึ้นเมื่อฉันต้องการออกแบบเพิ่มเติม ในการอ่านเกี่ยวกับรูปแบบวิธีการของแม่แบบฉันคิดได้ทันทีว่าสามารถนำไปใช้กับปัญหานี้ได้ การกระทำที่ทำเมื่อผู้ใช้ทำการย้ายจะเหมือนกันเสมอและในลำดับเดียวกันคือ: …

3
คุณจะบอกได้อย่างไรว่าจะใช้รูปแบบคอมโพสิตหรือโครงสร้างแบบต้นไม้หรือการนำไปใช้ครั้งที่สาม
ฉันมีสองประเภทลูกค้า "ผู้สังเกตการณ์ " - ประเภทและ " Subject " -type ทั้งคู่เกี่ยวข้องกับลำดับชั้นของกลุ่มลำดับชั้นของกลุ่ม ผู้สังเกตการณ์จะได้รับ(ปฏิทิน) ข้อมูลจากกลุ่มที่เกี่ยวข้องกับตลอดทั้งลำดับชั้นที่แตกต่างกัน ข้อมูลนี้ถูกคำนวณโดยการรวมข้อมูลจากกลุ่ม 'ผู้ปกครอง'ของกลุ่มที่พยายามรวบรวมข้อมูล (แต่ละกลุ่มสามารถมีผู้ปกครองได้เพียงคนเดียว ) หัวเรื่องจะสามารถสร้างข้อมูล (ซึ่งผู้สังเกตการณ์จะได้รับ) ในกลุ่มที่พวกเขาเชื่อมโยงด้วย เมื่อข้อมูลถูกสร้างขึ้นในกลุ่ม 'ลูก' ของกลุ่มทั้งหมดจะมีข้อมูลเช่นกันและพวกเขาจะสามารถสร้างพื้นที่เฉพาะของข้อมูลในเวอร์ชันที่เป็นของตัวเองแต่ยังคงเชื่อมโยงกับข้อมูลดั้งเดิมที่สร้างขึ้น (ใน การใช้งานเฉพาะของฉันข้อมูลดั้งเดิมจะมีช่วงเวลาและพาดหัวในขณะที่กลุ่มย่อยระบุข้อมูลที่เหลือสำหรับผู้รับที่เชื่อมโยงโดยตรงกับกลุ่มของตน) อย่างไรก็ตามเมื่อหัวเรื่องสร้างข้อมูลจะต้องตรวจสอบว่าผู้สังเกตการณ์ที่ได้รับผลกระทบทั้งหมดมีหรือไม่ ข้อมูลที่ขัดแย้งกับสิ่งนี้หรือไม่ซึ่งหมายถึงฟังก์ชั่นวนซ้ำขนาดใหญ่เท่าที่ฉันสามารถเข้าใจได้ ดังนั้นฉันคิดว่าสิ่งนี้สามารถสรุปได้ถึงความจริงที่ว่าฉันต้องมีลำดับชั้นที่คุณสามารถขึ้นและลงและบางแห่งสามารถปฏิบัติต่อพวกเขาโดยรวมได้ (การเรียกซ้ำโดยทั่วไป) นอกจากนี้ฉันไม่ได้แค่มุ่งแก้ปัญหาที่ใช้งานได้ ฉันหวังว่าจะหาวิธีแก้ปัญหาที่ค่อนข้างง่ายต่อการเข้าใจ (อย่างน้อยต้องมีสถาปัตยกรรมอย่างชาญฉลาด) และยังมีความยืดหยุ่นเพียงพอที่จะรับฟังก์ชั่นเพิ่มเติมในอนาคตได้อย่างง่ายดาย มีรูปแบบการออกแบบหรือแนวปฏิบัติที่ดีในการแก้ปัญหานี้หรือปัญหาลำดับชั้นที่คล้ายกัน แก้ไข : นี่คือการออกแบบของฉัน: คลาส "Phoenix" ตั้งชื่ออย่างนั้นเพราะฉันยังไม่ได้นึกถึงชื่อที่เหมาะสม แต่นอกเหนือจากนี้ฉันต้องสามารถซ่อนกิจกรรมที่เฉพาะเจาะจงสำหรับผู้สังเกตการณ์ที่เฉพาะเจาะจงแม้ว่าพวกเขาจะแนบกับพวกเขาผ่านกลุ่ม นอกหัวข้อเล็กน้อย : โดยส่วนตัวแล้วฉันรู้สึกว่าฉันควรจะสามารถตัดปัญหานี้ให้กลายเป็นปัญหาเล็ก ๆ น้อย ๆ ได้ แต่มันจะช่วยฉันได้อย่างไร ฉันคิดว่าเป็นเพราะมันมีฟังก์ชั่นเรียกซ้ำหลายอย่างที่ไม่เกี่ยวข้องกันและประเภทลูกค้าที่แตกต่างกันซึ่งจำเป็นต้องได้รับข้อมูลในรูปแบบที่แตกต่างกัน ฉันห่อหัวของฉันไม่ได้จริงๆ …

9
วิธีการแยกคลาสที่มีขนาดใหญ่และแน่นเข้าด้วยกันได้อย่างไร
ฉันมีชั้นเรียนขนาดใหญ่ที่มีโค้ดมากกว่า 2K บรรทัด (และเพิ่มขึ้นเรื่อย ๆ ) ที่ฉันอยากจะสร้างใหม่หากเป็นไปได้เพื่อให้มีการออกแบบที่เบาและสะอาดมากขึ้น เหตุผลที่มันใหญ่มากส่วนใหญ่เป็นเพราะคลาสเหล่านี้จัดการกับชุดของแผนที่ที่วิธีการส่วนใหญ่จำเป็นต้องเข้าถึงและวิธีการเชื่อมต่อกันมาก ฉันจะยกตัวอย่างชัดเจน: ฉันมีคลาสที่เรียกServerว่าจัดการข้อความขาเข้า มันมีวิธีการเช่นjoinChatroom, searchUsers, sendPrivateMessageและอื่น ๆ ทั้งหมดของวิธีการเหล่านี้จัดการแผนที่เช่นusers, chatrooms, servers... บางทีมันอาจจะดีถ้าฉันมีข้อความการจัดการเรียนที่เกี่ยวข้องกับห้องสนทนาการจัดการกับผู้ใช้อื่น ๆ แต่ปัญหาหลักที่นี่คือฉันต้องใช้แผนที่ทั้งหมดในวิธีการส่วนใหญ่ นั่นเป็นเหตุผลที่ตอนนี้พวกเขาทั้งหมดติดอยู่ในServerชั้นเรียนเพราะพวกเขาทั้งหมดพึ่งพาแผนที่ทั่วไปเหล่านี้และวิธีการเชื่อมต่อซึ่งกันและกัน ฉันจะต้องสร้างห้องเรียนแชท แต่มีการอ้างอิงถึงวัตถุอื่น ๆ ผู้ใช้คลาสอีกครั้งโดยอ้างอิงถึงวัตถุอื่นทั้งหมดเป็นต้น ฉันรู้สึกว่าฉันจะทำอะไรผิด

8
MVC ใช้กับเว็บเท่านั้นหรือไม่
มันเกือบจะทันทีและเมื่อใดก็ตามที่ฉันพูดคุยกับนักพัฒนาเกี่ยวกับ Model View Controller ( MVC ) พวกเขาบอกว่าคุณทำคำขอไปยัง URL ที่เซิร์ฟเวอร์สร้างเอนทิตี (MODEL) และให้การแสดงภาพของโมเดลนั้น นี่หมายความว่า MVC สำหรับเว็บเท่านั้นหรือฉันได้พบปะกับผู้คนที่เป็นเพียงนักพัฒนาซอฟต์แวร์ที่จ้าง MVC สำหรับการเขียนเว็บแอปพลิเคชัน มีการใช้งาน MVC บนเดสก์ท็อปสไตล์แอปพลิเคชันหรือไม่ ฉันเป็นคนใหม่สำหรับกระบวนทัศน์และอยากจะรู้ว่าซูเปอร์ชุดใด ๆ ที่ MVC

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