کتاب SOLID و DDD (Domain-Driven Design): همافزایی برای سیستمهای پیچیده با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
SOLID و DDD: ارتقا سطح برنامه نویسی شما با اصول طراحی قدرتمند SOLID و DDD: ارتقا سطح برنامه نویسی شما با اصول طراحی قدرتمند آیا شما هم به دنبال ساخت سیستمهایی هستید که در برابر تغییرات مقاوم باشند، ب...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره SOLID و DDD (Domain-Driven Design): همافزایی برای سیستمهای پیچیده
موضوع کلی: برنامه نویسی
موضوع میانی: اصول SOLID
📋 سرفصلهای دوره
- 1. مقدمهای بر پیچیدگی در سیستمهای نرمافزاری
- 2. چرا طراحی نرمافزار اهمیت دارد؟
- 3. آشنایی با مفهوم بدهی فنی (Technical Debt)
- 4. معرفی اصول SOLID به عنوان راهکاری برای مدیریت پیچیدگی
- 5. معرفی Domain-Driven Design (DDD) به عنوان یک رویکرد استراتژیک
- 6. همافزایی SOLID و DDD: چشمانداز دوره
- 7. مروری بر مفاهیم پایه شیءگرایی (OOP)
- 8. انسجام (Cohesion) و وابستگی (Coupling) چیست؟
- 9. قانون Demeter: صحبت فقط با دوستان نزدیک
- 10. اصل تک مسئولیتی (Single Responsibility Principle - SRP)
- 11. تعریف "مسئولیت" و "دلیلی برای تغییر"
- 12. SRP در سطح کلاسها
- 13. SRP در سطح متدها و ماژولها
- 14. شناسایی و رفع نقض SRP: نشانههای کد (Code Smells)
- 15. مثال عملی: بازسازی یک کلاس برای انطباق با SRP
- 16. اصل باز/بسته (Open/Closed Principle - OCP)
- 17. چگونه کد را برای توسعه باز و برای تغییر بسته نگه داریم؟
- 18. دستیابی به OCP از طریق انتزاع (Abstraction)
- 19. الگوی طراحی استراتژی (Strategy Pattern) به عنوان نمونه OCP
- 20. شناسایی و رفع نقض OCP
- 21. مثال عملی: اضافه کردن قابلیت جدید بدون تغییر کد موجود
- 22. اصل جایگزینی لیسکوف (Liskov Substitution Principle - LSP)
- 23. درک مفهوم وراثت و چندریختی (Polymorphism) صحیح
- 24. قوانین و نشانههای نقض LSP
- 25. مثال کلاسیک: مشکل مربع و مستطیل
- 26. تأثیر LSP بر قابلیت اطمینان و نگهداری سیستم
- 27. مثال عملی: اصلاح سلسلهمراتب وراثت برای انطباق با LSP
- 28. اصل تفکیک رابط (Interface Segregation Principle - ISP)
- 29. مشکل رابطهای بزرگ و سنگین (Fat Interfaces)
- 30. طراحی رابطهای کوچک و متمرکز بر نقش (Role Interfaces)
- 31. تفاوت ISP با SRP
- 32. شناسایی و رفع نقض ISP
- 33. مثال عملی: شکستن یک رابط بزرگ به رابطهای کوچکتر
- 34. اصل وارونگی وابستگی (Dependency Inversion Principle - DIP)
- 35. وابستگی به انتزاع، نه به پیادهسازی
- 36. ماژولهای سطح بالا و سطح پایین
- 37. وارونگی کنترل (Inversion of Control - IoC)
- 38. تزریق وابستگی (Dependency Injection - DI) به عنوان مکانیزم پیادهسازی DIP
- 39. مثال عملی: حذف وابستگیهای مستقیم با استفاده از DI
- 40. جمعبندی اصول SOLID: چگونه با هم کار میکنند؟
- 41. گذار از اصول تاکتیکی (SOLID) به طراحی استراتژیک (DDD)
- 42. مقدمهای بر طراحی دامنه محور (Domain-Driven Design)
- 43. مشکل "گلوله بزرگ گِل" (Big Ball of Mud) و راهکار DDD
- 44. زبان فراگیر (Ubiquitous Language): قلب تپنده DDD
- 45. نقش متخصص دامنه (Domain Expert) در پروژه
- 46. تفکیک DDD به دو بخش: استراتژیک و تاکتیکی
- 47. مقدمهای بر الگوهای استراتژیک DDD
- 48. مفهوم زمینه محدود (Bounded Context)
- 49. چرا جداسازی مدلها در زمینههای مختلف ضروری است؟
- 50. شناسایی و تعریف مرزهای Bounded Context
- 51. نقشهبرداری زمینه (Context Mapping)
- 52. الگوی هسته مشترک (Shared Kernel)
- 53. الگوی مشتری-تأمینکننده (Customer-Supplier)
- 54. الگوی دنبالهرو (Conformist)
- 55. الگوی لایه ضد فساد (Anti-Corruption Layer - ACL)
- 56. الگوی سرویس میزبان باز (Open Host Service - OHS)
- 57. الگوی زبان منتشر شده (Published Language)
- 58. زیردامنهها (Subdomains): هسته، پشتیبان و عمومی
- 59. تمرکز بر دامنه هسته (Core Domain)
- 60. معماری و ساختار تیم بر اساس Bounded Contextها (قانون Conway)
- 61. کارگاه عملی: کشف دامنهها با Event Storming
- 62. مقدمهای بر الگوهای تاکتیکی DDD
- 63. بلوکهای سازنده مدل دامنه: مقدمه
- 64. موجودیتها (Entities): اشیائی با هویت و چرخه حیات
- 65. اشیاء مقدار (Value Objects): مفاهیم بدون هویت و تغییرناپذیر
- 66. تفاوت کلیدی بین Entity و Value Object
- 67. تجمع (Aggregate): مرز سازگاری تراکنشها
- 68. ریشه تجمع (Aggregate Root)
- 69. قوانین طراحی Aggregate: کوچک و منسجم
- 70. کارخانهها (Factories): ساخت اشیاء پیچیده و Aggregateها
- 71. مخازن (Repositories): واسطی برای ماندگاری و بازیابی Aggregateها
- 72. سرویسهای دامنه (Domain Services): وقتی رفتار در یک شیء نمیگنجد
- 73. رویدادهای دامنه (Domain Events): ثبت وقایع مهم در سیستم
- 74. ماژولها (Modules): سازماندهی مدل دامنه
- 75. فصل مشترک SOLID و DDD: شروع همافزایی
- 76. SRP و طراحی Aggregateها و سرویسهای دامنه
- 77. OCP و تکامل مستقل Bounded Contextها
- 78. LSP و حفظ یکپارچگی مدلهای دامنه مبتنی بر وراثت
- 79. ISP و طراحی Repositoryها و رابطهای متمرکز
- 80. DIP به عنوان ستون فقرات معماری DDD
- 81. معماری لایهای (Layered Architecture) در DDD
- 82. معماری پیاز (Onion Architecture)
- 83. معماری ششضلعی (Hexagonal Architecture / Ports and Adapters)
- 84. اتصال Bounded Contextها از طریق لایه ضد فساد (ACL) و DIP
- 85. طراحی یک Aggregate با رعایت اصول SOLID
- 86. پیادهسازی یک Repository با رعایت DIP و ISP
- 87. نقش Value Objectها در افزایش خوانایی و رعایت SRP
- 88. استفاده از Domain Events برای کاهش وابستگی و پیادهسازی OCP
- 89. جداسازی مسئولیت خواندن و نوشتن (CQRS): مقدمه
- 90. پیادهسازی Commandها و Queryها
- 91. چگونه CQRS به سادهسازی مدلهای DDD کمک میکند؟
- 92. منبعیابی رویداد (Event Sourcing): نگاهی متفاوت به ماندگاری
- 93. مزایا و چالشهای Event Sourcing در کنار DDD
- 94. مطالعه موردی: طراحی سیستم فروش آنلاین با SOLID و DDD
- 95. شناسایی Bounded Contextها در سیستم فروش
- 96. طراحی مدل دامنه برای Bounded Context مدیریت سفارشات
- 97. پیادهسازی Aggregate سفارش با رعایت SOLID
- 98. پیادهسازی ارتباط بین Bounded Contextها (مثلاً سفارشات و انبار)
- 99. تستنویسی در معماری مبتنی بر SOLID و DDD
- 100. تست واحد (Unit Test) برای منطق دامنه
تگها:
SOLID و DDD (Domain-Driven Design): همافزایی برای سیستمهای پیچیده
آموزش آنلاین
اصول SOLID
برنامه نویسی
دوره آموزشی
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.