الگوی طراحی شرکت: اسکریپت تراکنش

مقدمه
در برنامه های سازمانی ، سازماندهی منطق کسب و کار به وضوح و به سادگی برای ایجاد سیستم های قابل نگهداری مهم است.
یک الگوی کلاسیک برای این اسکریپت معامله است.
این منطق تجارت را به عنوان یک سری اسکریپت های رویه ای ، که در آن هر اسکریپت یک معامله یا درخواست خاص را انجام می دهد ، ساختار می دهد.
اسکریپت تراکنش برای سیستم های ساده یا کوچک که در آن منطق دامنه پیچیده نیست ایده آل است.
قیاس در دنیای واقعی
یک صندوق دار را در یک فروشگاه مواد غذایی تصور کنید.
هر معامله مشتری-موارد اسکن ، اعمال تخفیف ، پردازش پرداخت-بدون ورود به اشیاء پیچیده یا گردش کار ، گام به گام انجام می شود.
به طور مشابه ، در اسکریپت معامله ، ما هر کار را به صورت مرحله به مرحله از طریق یک عملکرد یا رویه اداره می کنیم.
نمونه دنیای واقعی در کد
بیایید یک سیستم بانکی ساده بسازیم که در آن کاربران بتوانند واریز و پول را پس انداز کنند.
ما از پایتون استفاده خواهیم کرد زیرا خواندن و نوشتن آن ساده است.
# transaction_script.py
# A simple in-memory 'database' of accounts
accounts = {
'alice': 1000,
'bob': 500
}
def deposit(account_name, amount):
if account_name not in accounts:
raise ValueError("Account not found.")
if amount <= 0:
raise ValueError("Amount must be positive.")
accounts[account_name] += amount
print(f"Deposited {amount} to {account_name}. New balance: {accounts[account_name]}")
def withdraw(account_name, amount):
if account_name not in accounts:
raise ValueError("Account not found.")
if amount <= 0:
raise ValueError("Amount must be positive.")
if accounts[account_name] < amount:
raise ValueError("Insufficient funds.")
accounts[account_name] -= amount
print(f"Withdrew {amount} from {account_name}. New balance: {accounts[account_name]}")
def main():
deposit('alice', 200)
withdraw('bob', 100)
if __name__ == "__main__":
main()
توضیح
هر عملکرد (سپرده ، برداشت) یک اسکریپت معامله است که:
ورودی را تأیید می کند
“پایگاه داده” را به روز می کند (حساب های فرهنگ لغت)
نتیجه را چاپ می کند
نیازی به کلاس ها یا اشیاء پیچیده نیست.
هر عملیات تجاری به طور مستقیم به عنوان یک روش ساده کدگذاری می شود.
پایان
اسکریپت تراکنش یک الگوی عالی است که:
- شما منطق ساده ای دارید.
- شما می خواهید توسعه سریع و ساده.
- سیستم کوچک است یا بسیار پیچیده نیست.
برای برنامه های بزرگتر یا پیچیده تر ، ممکن است در نهایت به یک رویکرد ساختار یافته تر مانند مدل دامنه بروید.
می توانید کد کامل این مقاله را در مخزن GitHub من پیدا کنید: https://github.com/fabipm/research02_si889_u1_poma.git