Dictionary

Domain Driven Design Summary
حفاظت شده: AmnMoj

Table of Contents

Software Design Principles

SOLID

Dependency-Inversion-Principle

High Level Modules

اون قسمتی از برنامه که برای ما اهمیت بالاتری دارد و مهم تره ، 

loose coupling module

ماژول‌هایی هستند که به اندازه کافی مستقل از یکدیگر هستند تا امکان تغییر و به‌روزرسانی آنها را بدون اثرات جانبی در سایر قسمت‌های سیستم فراهم کنند.

مهمترین هدف این است که هر ماژول باید به طور مستقل قابل تغییر باشد، بدون این که تغییرات در یک ماژول، تغییرات گسترده‌ای در دیگر ماژول‌ها را به دنبال داشته باشد.

  1. وابستگی کمتر(Less dependence):

    • هر ماژول باید تنها به اندازه لازم از سایر ماژول‌ها استفاده کند و وابستگی‌های زیادی به دیگر ماژول‌ها نداشته باشد.
  2. interface های استاندارد:

    • استفاده از رابط‌های استاندارد برای ارتباط بین ماژول‌ها باعث افزایش اتصال گسسته می‌شود. 
  3. abstraction واحد:

    • هر ماژول باید یک نقش یا وظیفه مشخصی داشته باشد و از انجام وظایف بیش از حد خودداری کند.
  4. Limit access :

    • ماژول‌ها باید دسترسی به اطلاعات و وظایف دیگر ماژول‌ها را محدود کنند.
Tightly Coupled Dependency

دو قسمت یا ماژول از یکدیگر به شدت وابسته باشند و تغییر در یکی از آنها تأثیر مستقیم بر دیگری داشته باشد.

بهتر است که این دو ماژول به طور مناسب از یکدیگر جدا شوند و از روش‌های انتزاعی مثل رابط (Interface) استفاده کنند. به این ترتیب، هر ماژول می‌تواند مستقل از دیگری عمل کرده و تغییرات در یکی از آنها تأثیر چندانی بر دیگری نداشته باشد. این اتصال گسسته (Loose Coupling) نامیده می‌شود و باعث افزایش انعطاف‌پذیری و قابلیت تغییر در سیستم می‌شود.

Dependency Injection

برای اینکه بتوانیم Dependency Inversion  را پیاده سازی کنیم ، نیاز داریم تا وابستگی ها را تزریق کنیم(Dependency Injection) ، چون نمیشه از Abstraction نمونه سازی کرد . معمولاً از تکنیک Dependency Injection استفاده می کنیم.

IOC Container

وظیفه wire up کردن (سیم کشی کردن) برنامه ما را دارند ، که چه Abstraction ای چه پیاده سازی ای دارد؟ 

Design Patterns

Design Patterns

Concrete Class

یک نوع از کلاس است که به طور مستقیم از یک کلاس Abstract یا یک رابط (Interface) ارث‌بری می‌کند و تمامی Method های مورد نیاز را پیاده‌سازی می‌کند.