فصل 22 کتاب Clean Architecture : معماری تمیز

کتاب معماری تمیز

 

هر یک از این معماریها، سیستمهایی را تولید می کنند که دارای مشخصات زیر هستند:

  • فریم ورک های مستقل (Independent of frameworks) . این معماری به وجود برخی از کتابخانه هایی که سرشار از انواع امکانات ویژگیها (Library of feature-laden software) هستند، وابسته نیست. این امر به شما این امکان را میدهد به جای این که شما را مجبور کنند سیستمتان را از محدودیتهای شرطی به علت استفاده از فریم ورکها پر کنید، بعضی فریم ورک ها را به عنوان ابزار به کار ببرید.
  • آزمون پذیر. قوانین کسب و کار میتوانند بدون UI ، پایگاه داده، وب سرور یا هر عنصر خارجی دیگر مورد آزمایش قرار گیرند.
  • مستقل از UI .UI میتواند به آسانی بدون تغییر بقیه ی سیستم، تغییر کند. یک web UIمیتواند با یک console UI بدون تغییر در قوانین کسب و کار جایگزین شود.
  • پایگاه داده ی مستقل. شما میتوانید Oracle یا SQL Server را برای BigTable ،Mongo ، CouchDBیا برخی چیزهای دیگر جایگزین کنید. قوانین کسب و کار شما نباید به خاطر محدودیتها یا ویژگیهای پایگاه داده محدود شوند.
  • مستقل از هر فعالیت بیرونی. در حقیقت، قوانین کسب و کار شما هیچ چیز درباره ی اینترفیس ها در دنیای بیرونی نمیدانند.

دیاگرام شکل 1- 22 تلاشی برای ادغام این معماری ها به یک ایده ی عملیاتی واحد است.

کتاب معماری تمیز

شکل 1-22 : معماری تمیز

قانون وابستگی

دایره های متمرکز در شکل 1- 22، نواحی مختلف نرم افزار را نشان میدهند. به طور کلی، هرچه جلوتر میرویم، سطوحهای بالاتر نرم افزار دیده میشوند.

دایره های بیرونی مربوط به مکانیزم ها و دایره های داخلی مربوط به خط مشی ها هستند.

قانون اولی که باعث میشود این معماری، کارکند، قانون وابستگی است:

وابستگیهای سورس کد می بایست به داخل و به سمت خط مشی های سطح بالا اشاره کنند.

طبق این شکل، هیچ کدام از سطوح نرم افزار که در یک دایره داخلی هست، نباید اطلاعاتی درباره ی یک لایه نرم افزار که در دایره های خارجی هستند، داشته باشد. به خصوص، نام بعضی سطوح که در یک دایره ی بیرونی اعلان شده اند نباید توسط کدی در دایره ی داخلی نام برده شود. این قسمتها شامل توابع، کلاسها، متغیرها یا هر موجودیت نرم افزاری دیگر می باشد.

به طور مشابه، نوع داده که در یکی از سطوح نرم افزاری در یک دایره ی بیرونی اعلان شده اند نباید توسط یکی از سطوح نرم افزار موجود در دایره ی داخلی به کار روند، به ویژه اگر آن، نوع داده توسط فریمورکی در یک دایره ی خارجی تولید شده باشند. با توجه به شکل 1- 22 ما نمیخواهیم هیچ چیزی در یک دایره ی بیرونی روی دایره های داخلی تأثیر بگذارد.

این متن فقط قسمتی از فصل 22 کتاب Clean Architecture می باشد.

0 پاسخ ها

دیدگاه خود را ثبت کنید

آیا می خواهید به بحث بپیوندید؟
در صورت تمایل از راهنمایی رایگان ما استفاده کنید!!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *