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

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

4
รูปแบบของผู้เข้าชมใช้ได้ในสถานการณ์นี้หรือไม่
เป้าหมายของงานของฉันคือการออกแบบระบบขนาดเล็กที่สามารถเรียกใช้งานที่เกิดขึ้นซ้ำตามกำหนดเวลา งานที่เกิดซ้ำเป็นเหมือน "ส่งอีเมลไปยังผู้ดูแลระบบทุกชั่วโมงตั้งแต่ 8:00 น. ถึง 17:00 น. วันจันทร์ถึงวันศุกร์" ฉันได้เรียนฐานที่เรียกว่าRecurringTask public abstract class RecurringTask{ // I've already figured out this part public bool isOccuring(DateTime dateTime){ // implementation } // run the task public abstract void Run(){ } } และฉันมีหลายชั้นเรียนซึ่งได้รับมาจากRecurringTask หนึ่งในนั้นคือเรียกว่าSendEmailTask public class SendEmailTask : RecurringTask{ private Email email; public SendEmailTask(Email …

3
ใช้อินเทอร์เฟซสำหรับประเภทข้อมูลเป็นแบบป้องกันหรือไม่
สมมติว่าฉันมีเอนทิตีต่าง ๆ ในแบบจำลองของฉัน (โดยใช้ EF), พูดว่าผู้ใช้ผลิตภัณฑ์ใบแจ้งหนี้และใบสั่ง ฉันกำลังเขียนตัวควบคุมผู้ใช้ที่สามารถพิมพ์บทสรุปของเอนทิตีวัตถุในแอปพลิเคชันของฉันซึ่งเป็นรายการที่กำหนดไว้ล่วงหน้าในกรณีนี้ฉันบอกว่าสรุปของผู้ใช้และผลิตภัณฑ์สามารถสรุปได้ บทสรุปจะมีเพียง ID และคำอธิบายเท่านั้นดังนั้นฉันจึงสร้างอินเทอร์เฟซอย่างง่ายสำหรับสิ่งนี้: public interface ISummarizableEntity { public string ID { get; } public string Description { get; } } จากนั้นสำหรับเอนทิตีที่มีปัญหาฉันสร้างคลาสบางส่วนที่ใช้อินเทอร์เฟซนี้: public partial class User : ISummarizableEntity { public string ID { get{ return UserID.ToString(); } } public string Description { get{ return …

1
รูปแบบการสร้างเมนู
ฉันมีปัญหาในการจัดการกับเมนูที่ไม่ได้ใช้ในการกำหนดเส้นทาง ฉันมาจาก Drupal ที่ระบบเมนูจัดการการกำหนดเส้นทางเช่นกัน ดังนั้นการตั้งค่าสถานะที่ใช้งานและสถานะเส้นทางที่ใช้งานจะถูกจัดการโดยเส้นทาง (ที่ทำหน้าที่เป็นระบบการแสดงผลเมนูเช่นกัน) ตอนนี้กรอบ PHP จำนวนมากมีคลาสเราเตอร์ที่จัดการการกำหนดเส้นทาง ดูเหมือนจะเป็นการแยกที่ดีเนื่องจากเมนูไม่ควรระวัง POST || ตัวเลือก || ... คำขอ แต่เมื่อเขียนส่วนหน้าฉันพบว่าตัวเองเขียนโค้ดเมนูยาก หรือเก็บทุกอย่างใน DB และส่งค่าเหล่านั้นไปยังมุมมอง สิ่งที่ฉันไม่ชอบคือวิธีนี้คือคุณกำลังสร้างสำเนาของสิ่งที่คุณเขียนไว้ในเราเตอร์ แต่ตอนนี้ใช้คลาสเมนู ตัวอย่าง: Route::get('/somewhere','routename.somewhere','showStuffController'); Route::post('/somewhere','routename.somewhere','saveStuffController'); Menu::add('label.somewhere','routename.somewhere'); คุณกำลังแยกข้อกังวลที่นี่เพื่อที่ดี แต่เมนูขึ้นอยู่อย่างมากในเส้นทางเพื่อตั้งค่าสถานะการใช้งาน เมนูจะต้องรู้เกี่ยวกับลำดับชั้นเพื่อกำหนดเส้นทางการใช้งาน ใช่แล้วการตั้งค่าเทรลแอคทีฟและคลาสสถานะแอคทีฟเป็นเรื่องของมุมมอง แต่มี if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; } ทุกมุมมองของคุณดูโง่ ถ้าอย่างนั้นก็ให้เพิ่มแอคทีฟเทรลที่น่ารำคาญหากมันเป็นของจริง การจัดการสิ่งนั้นก่อนที่ภาพจะเรนเดอร์และตั้งค่าสถานะแอคทีฟเทรลให้เป็นจริงเพียง แต่ดูน่าเกลียดในแบบที่ฉันรู้ คำถามของฉันคือ: มีรูปแบบหรือวิธีที่ชาญฉลาดในการทำความสะอาดนี้ดีกว่า ... ? หนึ่งควรจัดการ …

1
รูปแบบเพื่อแบ่งปันวัตถุระหว่าง API และแอปพลิเคชัน
ฉันมีข้อสงสัยอย่างมากเกี่ยวกับการออกแบบสำหรับเว็บแอปพลิเคชันของฉัน ฉันต้องการแยกตรรกะทางธุรกิจออกจากส่วนติดต่อดังนั้นฉันจึงสร้าง Web API ที่จัดการคำขอทั้งหมดไปยังฐานข้อมูล มันเป็น ASP.NET Web API พร้อม Entity framework และหน่วยการทำงานและรูปแบบพื้นที่เก็บข้อมูลทั่วไป จนถึงตอนนี้ทุกอย่างดี ปัญหา ที่ฉันต้องการความช่วยเหลือฉันไม่สามารถหาวิธีที่มีประสิทธิภาพในการแชร์ออบเจ็กต์ระหว่าง API และแอปพลิเคชัน ฉันไม่ต้องการที่จะทำให้เป็นลำดับวัตถุวัตถุโดยตรงฉันคิดว่ามันจะเป็นวิธีปฏิบัติที่ไม่ดีเพราะถ้ารูปแบบนิติบุคคลมีการเปลี่ยนแปลงฉันสามารถจบลงด้วยวัตถุขนาดใหญ่ที่ทำให้เป็นอันดับโดยไม่มีเหตุผล วิธีการใช้งานตอนนี้ เนื่องจากอินเทอร์เฟซของฉันคือ ASP.NET เว็บแอปพลิเคชันใน C # และ API ของฉันอยู่ใน C # ฉันจึงสร้างไลบรารีทั่วไปพร้อมคำจำกัดความของคลาสทั้งหมดของฉันที่ฉันต้องการแชร์ระหว่างพวกเขา ฉันรู้ว่าวิธีแก้ปัญหาจะไม่ทำงานเมื่อฉันจะพัฒนาแอพ Android ฉันจะต้องสร้างคลาสของฉันอีกครั้งใน Java แต่นั่นไม่ใช่ปัญหาที่ใหญ่ที่สุดของฉัน ปัญหาคือฉันรู้สึกว่าฉันมักจะแปลงวัตถุของฉัน ตัวอย่าง นี่คือตัวอย่างของกระบวนการทำงานของฉัน: ฉันเริ่มต้นด้วยโมเดลที่มีวัตถุทั้งหมดและบันทึกย่อข้อมูลสำหรับฟอร์มของฉันจากนั้นผู้ใช้จะโพสต์โมเดลนั้นไปยังคอนโทรลเลอร์ ในคอนโทรลเลอร์ฉันต้องแปลงโมเดลนี้เป็นคลาสในไลบรารีทั่วไปของฉันจากนั้นส่งวัตถุนั้นไปยัง API ของฉัน จากนั้นคอนโทรลเลอร์ใน API ของฉันจะรับสายและแปลงวัตถุนั้นเป็นวัตถุเอนทิตีเพื่ออัพเดทฐานข้อมูล ดังนั้นฉันมี 3 ชั้น โมเดลสำหรับมุมมองพร้อมหมายเหตุประกอบข้อมูลทั้งหมดสำหรับการตรวจสอบความถูกต้อง …

2
การออกแบบแอปพลิเคชัน Javascript MVC (แคนวาส)
ฉันมีปัญหาในการเข้าใจวิธีการจัดโครงสร้าง / ออกแบบแอปพลิเคชั่นแคนวาสโดยใช้ MVC เหมือนกับแนวทางใน Javascript UI จะค่อนข้างลื่นไหลและมีชีวิตชีวาเกมค่อนข้างง่าย แต่เน้นหนักไปที่การทวีตและภาพเคลื่อนไหว ฉันเข้าใจวิธีการทำงานของ MVC ในหลักการ แต่ไม่ใช่ในทางปฏิบัติ ฉันเริ่มดื่มเหล้าจากที่นี่อ่านมาก ๆ และตอนนี้ฉันก็สับสนเหมือนตอนที่ฉันเริ่ม รายละเอียดบางอย่างเกี่ยวกับพื้นที่แอพพลิเคชัน: เฟรมเวิร์กเกมหลายหน้าจอ - เกมหลายเกมจะอยู่ภายในกรอบ "หน้าจอ" UI ทั่วไปนี้รวมถึง: การตั้งค่าข้อมูลเลือกความยากลำบากเมนูหลักเป็นต้น วิธีการป้อนข้อมูลหลายวิธี องค์ประกอบ UI ทั่วไปเช่นแถบเมนูด้านบนในบางหน้าจอ ความเป็นไปได้ของการใช้วิธีการแสดงผลที่แตกต่างกัน (canvas / DOM / webGL) ในตอนนี้ฉันมี AppModel, AppController และ AppView จากที่นี่ฉันวางแผนที่จะเพิ่ม "หน้าจอ" แต่ละรายการและแนบไปยัง AppView แต่สิ่งที่เกี่ยวกับสิ่งต่าง ๆ เช่นแถบเมนูด้านบนพวกเขาควรเป็น MVC สามกลุ่มอื่นหรือไม่ ฉันจะติดตั้งที่ไหนและอย่างไรโดยไม่ต้องมีการเชื่อมต่ออย่างแน่นหนา? เป็นวิธีปฏิบัติที่ยอมรับได้หรือไม่ที่จะมี …

4
.NET Programming และคลาส POCO
ฉันมีความคิดในคืนนี้ขณะที่ไตร่ตรองเกี่ยวกับแอปพลิเคชันบางอย่างที่ฉันต้องเปลี่ยนและทำให้ฉันคิดได้ เอนทิตีกรอบเอนทิตีเป็น POCO (ธรรมดา CLR วัตถุเก่า) และรูปแบบที่ใช้ใน ASP.NET MVC ก็มักจะ POCO นี่หมายถึงคุณสมบัติโดยทั่วไปไม่มีวิธีการ ตอนนี้การเขียนโปรแกรม OO ตามปกติจะอนุญาตให้วัตถุห่อหุ้มการทำงานของมันซึ่งรวมถึงคุณสมบัติของมันเช่นเดียวกับวิธีการของมันซึ่งจะช่วยให้เกิดความหลากหลาย ด้วยการเพิ่มขึ้นของคลาส POCO ที่ใช้รูปแบบการออกแบบเช่นที่เก็บทั่วไปกลายเป็นที่นิยมมากขึ้น เมื่อก่อนวัตถุของฉันจะมีการดำเนินการ CRUD ของตัวเองตอนนี้ฉันมีพวกเขาในพื้นที่เก็บข้อมูล นี่เป็นเพียงวิวัฒนาการใน OO ที่การดำเนินการ CRUD ถูกลบออกจากวัตถุเพื่อให้สามารถแยกหรือการดำเนินการ CRUD อาจไม่ได้อยู่ในระดับวัตถุในอดีตและฉันผิด ห่าบางทีทั้งสองอย่างถูกต้องตามกฎหมายและได้รับเสมอ มันเป็นเพียงข้อสังเกตที่ทำให้ฉันคิดดังนั้นฉันจึงคิดว่าจะหาความคิดเห็นอื่น

2
อะไรคือความแตกต่างระหว่างประเภทตนเองและการสืบทอดลักษณะในสกาลา?
เมื่อ Googled มีคำตอบมากมายสำหรับหัวข้อนี้ อย่างไรก็ตามฉันไม่รู้สึกว่าพวกเขาทำงานได้ดีในการอธิบายความแตกต่างระหว่างคุณสมบัติทั้งสองนี้ ดังนั้นฉันอยากลองอีกครั้งโดยเฉพาะ ... อะไรคือสิ่งที่สามารถทำได้กับประเภทตนเองและไม่ได้มีมรดกและในทางกลับกัน? สำหรับฉันมันควรจะมีความแตกต่างเชิงปริมาณระหว่างสองอย่างใดอย่างหนึ่ง หากลักษณะ A ขยาย B หรือประเภทตนเอง B ทั้งคู่ไม่แสดงให้เห็นว่าการเป็น B เป็นข้อกำหนดหรือไม่ ความแตกต่างอยู่ที่ไหน

3
วิธีที่ดีที่สุดในการเชื่อมโยงบริบทฐานข้อมูล Entity Framework (รุ่น) กับ ViewModel ใน MVVM WPF คืออะไร
ดังในคำถามข้างต้น: อะไรคือวิธีที่ดีที่สุดในการเชื่อมโยงโมเดลฐานข้อมูล Entity Framework (บริบท) กับ viewModel ใน MVVM (WPF) ฉันกำลังเรียนรู้รูปแบบ MVVM ใน WPF ตัวอย่างจำนวนมากแสดงวิธีการนำโมเดลไปใช้กับ viewModel แต่โมเดลในตัวอย่างนั้นเป็นคลาสที่เรียบง่ายฉันต้องการใช้ MVVM พร้อมกับโมเดลเฟรมเวิร์กเอนทิตี (base first approach) Whats วิธีที่ดีที่สุดในการวางสายเพื่อดู model ขอบคุณสำหรับคำตอบ //ctor of ViewModel public ViewModel() { db = new PackageShipmentDBEntities(); // Entity Framework generated class ListaZBazy = new ObservableCollection<Pack>(db.Packs.Where(w => w.IsSent == false)); } …

3
การสร้างความสัมพันธ์เอนทิตีใน REST: ฉันสามารถสร้างพาเรนต์โดยโพสต์ไปที่ id เด็กได้หรือไม่?
ขณะนี้เรากำลังออกแบบ REST API เพื่อเข้าถึงข้อมูลลูกค้าแบบดั้งเดิม หนึ่งในองค์ประกอบใน API เป็นสินทรัพย์ของผู้ใช้ สินทรัพย์จะถูกเพิ่มภายใต้บริการที่กำหนด API ส่วนหลังจะเพิ่มเนื้อหาให้กับผู้ใช้ภายใต้บริการที่กำหนดเท่านั้น ดังนั้นจึงไม่มีผู้ใช้ - ความสัมพันธ์ของเนื้อหา แต่เป็นผู้ใช้ - [บริการ] - ความสัมพันธ์ของเนื้อหา URI ของเราจะเป็นดังนี้: /users/{id}/assets/{id}/services/{id} การใช้ API จะทราบรหัสเนื้อหาและรหัสบริการเพื่อสร้างรายการใหม่ สิ่งที่เราดิ้นรนคือการสร้างความสัมพันธ์นี้ วิธีหนึ่งที่ตรงไปตรงมาคือการโพสต์ความสัมพันธ์ทั้งหมด /users/{id}/assets/ POST /users/{id}/assets {asset:${id}, service:{id}, attribute1:"{var}", attribute2:"{var}"} แต่จากนั้นเราไม่ได้สร้างเนื้อหาตามที่ URI อาจระบุ แต่เป็นเรื่องเกี่ยวกับบริการสินทรัพย์ อีกทางเลือกหนึ่งเรากำลังพิจารณา POST'ing กับ URI ที่เกี่ยวข้องกับความสัมพันธ์ดังนี้: POST /users/{id}/assets/{id}/service/{id} {attribute1:"{var}", attribute2:"{var}"} แต่ในกรณีนี้เส้นทางของทรัพยากร/users/{id}/assets/{id}จะไม่มีอยู่ก่อน POST และจะถูกสร้างเป็นผลข้างเคียง กำลังโพสต์ไปยังเส้นทางของทรัพยากรที่ยังไม่ได้รับอนุญาตเลย? …

4
รูปแบบการเขียนโปรแกรมใน Perl
ฉันทำงานใน Java ดังนั้นโดยทั่วไปฉันใช้กระบวนทัศน์ OOP ในระหว่างการเข้ารหัส ฉันกำลังจะเริ่มทำงานใน Perl และฉันสงสัยว่ากระบวนทัศน์ที่นักพัฒนา Perl ติดตามคืออะไร ในวิกินั้นกล่าวว่ามันสนับสนุนกระบวนทัศน์จำนวนมาก แต่ฉันไม่แน่ใจว่าฉันเข้าใจสิ่งนี้เพราะเป็นภาษาสคริปต์ ดังนั้นคำถามของฉันคือ: รูปแบบเชิงวัตถุที่ฉันคุ้นเคยใน Java idiomatic ใน Perl หรือฉันจะต้องเปลี่ยนสไตล์การออกแบบของฉันเพื่อเขียน Perl ที่มีประสิทธิภาพหรือไม่ หมายเหตุ: นี่ไม่ใช่คำถามที่จะวิจารณ์ Perl จริง ๆ แล้วฉันต้องทำงานใน Perl และต้องการที่จะเข้าใจวิธีการที่โปรแกรมปัจจุบันของฉันจะเปลี่ยนแปลง

2
ฉันจะรวม 'Command' และ 'Composite' เพื่อจำลองการหน่วงเวลาได้อย่างไร
ในแบบฝึกหัดการเรียนรู้ (ฉันไม่ได้อยู่ที่โรงเรียน - เป็นเพียงแค่ชายแก่ที่พยายามเรียนรู้สิ่งใหม่) ฉันพยายามเขียนการจำลองประตูตรรกะที่รวมเอาการหน่วงเวลาไว้ ผู้ใช้ควรสามารถจัดกลุ่มประตูด้วยกันเพื่อสร้างวัตถุระดับสูงขึ้น ฉันต้องการใช้รูปแบบการออกแบบกับปัญหาของฉัน แต่ฉันมีเวลายาก ฉันอ่านHead First Design Patternsและฉันเห็นว่ารูปแบบคำสั่งเป็นวิธีที่ดีในการจำลองพัลส์ไฟฟ้าผ่านวงจรที่มีความล่าช้า ฉันยังเห็นว่ารูปแบบคอมโพสิตเป็นวิธีที่ดีในการจำลองหน่วยซ้อนกัน ฉันไม่รู้วิธีผสมสองอย่างนี้เข้าด้วยกัน กล่าวอีกนัยหนึ่งเมื่อฉันวนผ่านประตูของฉันฉันเห็นว่าประตู 'x' ควรยิง มันมีความล่าช้า 15 นาโนวินาทีดังนั้นฉันจึงสร้างคำสั่งด้วยการประทับเวลา 15 ns จากเวลาเล่นเกมปัจจุบัน ผู้แจกจ่ายอยู่ที่ไหน ในตัวอย่างของร้านอาหารที่มีคำสั่งเป็น 'สั่งซื้อ' พนักงานเสิร์ฟและผู้ปรุงแต่ละคนส่งคำสั่งและมีตัวเลือกในการแนะนำการหน่วงเวลา ถ้าฉันมีประตู 'ประกอบ' มันจะมีดิสแพตเชอร์ของตัวเองหรือไม่ ฉันต้องใช้ซิงเกิลตันเพื่อจัดการคิวหรือไม่ ฉันอ่านสิ่งที่ฉันสามารถหาได้ แต่ฉันยังต้องการแรงผลักดันในทิศทางที่ถูกต้อง: /programming/2015549/using-command-design-pattern /programming/12016314/client-server-command-design-pattern-with-variable-delays /programming/10560892/composite-of-commands-design-pattern /programming/8874705/how-can-i-calculate-propagation-delay-through-series-of-combinational-circuits-u

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

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

5
ควรหยุดการสืบทอดเมื่อใด
กาลครั้งหนึ่งนานมานี้ฉันถามคำถามเกี่ยวกับการโอเวอร์โฟลว์เกี่ยวกับการสืบทอด ฉันได้กล่าวว่าฉันออกแบบเครื่องมือหมากรุกในแบบ OOP ดังนั้นฉันจึงรับช่วงต่อของฉันทั้งหมดจากระดับนามธรรมของ Piece แต่การสืบทอดยังคงดำเนินต่อไป ให้ฉันแสดงด้วยรหัส public abstract class Piece { public void MakeMove(); public void TakeBackMove(); } public abstract class Pawn: Piece {} public class WhitePawn :Pawn {} public class BlackPawn:Pawn {} โปรแกรมเมอร์พบว่าการออกแบบของฉันมีความเหนือกว่าทางวิศวกรรมเล็กน้อยและแนะนำให้เอาคลาสสีที่มีสีออกมา public abstract class Piece { public Color Color { get; set; } public abstract void …

4
เครื่องจักรสถานะลูกสามารถปล่อยการควบคุมกลับไปยังเครื่องสถานะหลักได้อย่างไร
เครื่องสถานะระดับบนสุดของฉันมีสถานะและขอบบางอย่าง ฉันจะเรียกสิ่งนี้ว่าเครื่องสถานะแม่ A ----> B ----> C สถานะใด ๆ ภายในเครื่องสถานะแม่สามารถเป็นเครื่องรัฐเกินไป ฉันจะเรียกเด็กเหล่านี้เครื่องจักรรัฐ ___________ / \ A ----> | B0->B1->B2 | ----> C \____________/ หากเครื่องสถานะแม่เปลี่ยนจาก A ถึง B, เครื่องสถานะของ B ใช้เวลามากกว่า เมื่อ B รันเสร็จสิ้นแล้วมันจะปล่อยการควบคุมไปยังเครื่องสถานะหลักและเปลี่ยนไปใช้สถานะ C ได้อย่างไร คุณใช้รูปแบบการออกแบบแบบใด หากคุณสงสัยว่าฉันมีเครื่องลูกแสดงสถานะภายในเครื่องแม่เพราะโครงการที่แน่นอนของฉันค่อนข้างซับซ้อนและเป็นเรื่องธรรมดาที่จะสรุปการทำงานภายในของสถานะลูก

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