รูปแบบที่ถูกต้องที่นี่ขึ้นอยู่กับบริบท ก่อนที่จะเลือกรูปแบบที่เฉพาะเจาะจงใด ๆ ฉันจะพยายามหาคำตอบสำหรับคำถามเหล่านั้น:
- จำเป็นต้องสร้างการรวมกันของการตรวจสอบ (1,2,3) ที่แตกต่างกันในเวลาทำงานหรือไม่?
- พวกเขาต้องการตัวแปรเดียวกันเพื่อดำเนินการของพวกเขาหรือพวกเขาแตกต่างกันมาก?
- ข้อความแสดงข้อผิดพลาดมีความแม่นยำเพียงใด
- ในกรณีของความล้มเหลวผู้ใช้ลองใหม่อีกครั้งจาก (1) ขั้นตอนเสมอ?
- วิธีการจัดการภาวะพร้อมกัน?
- แต่ละวิธีเพิ่มบางสิ่งลงในคำขอหรือตรวจสอบความถูกต้องหรือไม่? (พูดว่า acct id เริ่มต้นหรือไม่)
ตามความรู้สึกของลำไส้ฉันจะใช้มันเป็นวิธีการธรรมดาที่มีพารามิเตอร์รวมสำหรับรหัสข้อผิดพลาด
public void DoTransaction(IErrorAgregator error, TransactionRequest request)
{
if(!IsTransactionInCertainTimePeriod(request, error)) return;
if(!IsTransactionAmountInUserBounds(request, error)) return;
if(!UserHaveDefaultAccount(request, error)) return;
bankingTransactor.PerformTransaction(request);
}
อาจเป็นความคิดที่ดีที่จะวาง DoTransaction ในส่วนติดต่อ "ITransactionValidationStragegy" และสร้างเลเยอร์แบบซุปเปอร์เลเยอร์ซึ่งจะมีรหัสตรวจสอบสำเร็จรูป
อย่างไรก็ตามในการออกแบบนี้ฉันสันนิษฐานว่าตรรกะการตรวจสอบจะถูกกำหนดในเวลารวบรวม