SlideShare a Scribd company logo
1
2
Amirhossein Amini
amirhamini75@gmail.com
3
Solid
Software Development is not a Jenga game
4
5
Single Responsibility Principle
‫کنی‬ ‫مسئولیتی‬ ‫تک‬ ‫را‬ ‫هایتان‬ ‫کالس‬‫د‬
‫باشد‬ ‫داشته‬ ‫نقش‬ ‫یک‬ ‫باید‬ ‫فقط‬ ‫کالس‬ ‫یک‬
‫و‬
‫باشد‬ ‫داشته‬ ‫تغییر‬ ‫برای‬ ‫دلیل‬ ‫یک‬ ‫باید‬ ‫کالس‬ ‫یک‬
‫های‬ ‫کالس‬ ‫به‬ ‫را‬ ‫مسئولیتی‬ ‫چند‬ ‫کالس‬ ‫یک‬
‫کنید‬ ‫تقسیم‬ ‫دیگر‬ ‫کوچکتر‬
6
7
SINGLE RESPONSIBILITY PRINCIPLE
Just Because You Can, Doesn't Mean You Should
‫کالس‬ ‫چند‬ ‫به‬ ‫مسئولیتی‬ ‫چند‬ ‫کالس‬ ‫یک‬ ‫تبدیل‬
‫مسئولیتی‬ ‫تک‬
‫ب‬ ‫مثال‬ ‫میتوانیم‬ ‫منظور‬ ‫این‬ ‫به‬ ‫رسیدن‬ ‫برای‬‫را‬ ‫اال‬
‫صورت‬ ‫به‬3‫کنیم‬ ‫ایجاد‬ ‫مختلف‬ ‫کالس‬
8
‫اول‬ ‫تبدیل‬
‫کالس‬Employee‫حاوی‬ ‫فقط‬ ‫که‬
Property‫است‬
‫از‬ ‫غیر‬ ‫به‬ ‫یعنی‬Property‫ندارد‬ ‫وجود‬ ‫کالس‬ ‫این‬ ‫در‬ ‫دیگری‬ ‫چیز‬
9
‫دوم‬ ‫تبدیل‬
‫کالس‬EmployeeDB‫حاوی‬ ‫فقط‬ ‫که‬
method‫که‬ ‫هایی‬ ‫متد‬ ‫مثال‬ ‫هاست‬
‫انجام‬ ‫دیتابیس‬ ‫برروی‬ ‫عملیاتی‬
‫میدهند‬
10
‫سوم‬ ‫تبدیل‬
‫کالس‬EmployeeReport‫فقط‬ ‫که‬
‫حاوی‬method‫عمل‬ ‫است‬ ‫هایی‬
‫میدهند‬ ‫انجام‬ ‫را‬ ‫گیری‬ ‫گزارش‬
11
Open Closed Principle
‫شدن‬ ‫اضافه‬ ‫با‬ ‫که‬ ‫باشد‬ ‫ای‬ ‫گونه‬ ‫به‬ ‫باید‬ ‫طراحی‬‫یک‬
‫نشوند‬ ‫مشکل‬ ‫دچار‬ ‫ها‬ ‫بخش‬ ‫مابقی‬ ‫جدید‬ ‫ویژگی‬
12
‫اصل‬OCP‫میگوید‬:
"‫‌های‌نرم‌افزار‌باید‌برای‌تغییرات‌بسته‌و‌برای‌توسعه‌باز‌با‬‫ل‬‫ماژو‬‫شند‬."
Software entities should be open for
extension but closed for modification.
‫کنید‬ ‫توجه‬ ‫زیر‬ ‫مثال‬ ‫به‬:
13
‫داریم‬ ‫ساختمان‬ ‫یک‬ ‫بگیرید‬ ‫نظر‬ ‫در‬
‫خا‬ ‫دوم‬ ‫و‬ ‫اول‬ ‫ی‬‫طبقه‬ ‫بین‬ ‫طبقه‬ ‫یک‬ ‫میخواهید‬ ‫شما‬ ‫که‬ ‫میکنیم‬ ‫فرض‬‫ی‬‫نه‬
2‫کنید‬ ‫اضافه‬ ‫خود‬ ‫ی‬‫طبقه‬.‫است؟‬ ‫پذیر‬ ‫امکان‬ ‫فکرمیکنید‬
‫ها‬ ‫حل‬ ‫راه‬
‫زمانی‬‫که‬‫برای‬‫اولین‬‫بار‬‫در‬‫حال‬‫ساخت‬‫خانه‬
‫هستید‬‫آن‬‫را‬3‫طبقه‬‫بسازید‬‫و‬‫ی‬‫طبقه‬‫وسط‬‫ر‬‫ا‬
‫خالی‬‫نگه‬‫دارید‬.‫اینطوری‬‫هر‬‫زمان‬‫که‬‫شما‬
‫بخواهید‬‫میتوانید‬‫از‬‫آن‬‫استفاده‬‫کنید‬.‫به‬‫هر‬
‫حال‬‫این‬‫هم‬‫یک‬‫راه‬‫حل‬‫است‬.
‫خراب‬‫کردن‬‫طبقه‬‫دوم‬‫و‬‫ساخت‬‫دو‬
‫ی‬‫طبقه‬‫جدید‬‫که‬‫خوب‬‫اصال‬‫معقول‬‫نیس‬‫ت‬.
14
Liskov Substitution Principle
‫جایگز‬ ‫بتوانند‬ ‫باید‬ ‫ها‬ ‫کالس‬ ‫زیر‬‫ین‬
‫شوند‬ ‫خود‬ ‫پایه‬ ‫نوع‬
15
‫واقعی‬ ‫جهان‬ ‫با‬ ‫مقایسه‬:
‫شغل‬‫یک‬‫پدر‬‫تجارت‬‫امالک‬‫است‬‫درحالی‬‫که‬‫پسرش‬
‫دوست‬‫دارد‬‫فوتبالیست‬‫شود‬.‫یک‬‫پسر‬‫هیچگاه‬
‫نمیتواند‬‫جایگزین‬‫پدرش‬،‫شود‬‫با‬‫اینکه‬‫که‬‫آنها‬‫به‬‫یک‬
‫سلسله‬‫مراتب‬‫خانوادگی‬‫تعلق‬‫دارند‬.
‫میکنیم‬ ‫بررسی‬ ‫تر‬‫عمومی‬ ‫مثال‬ ‫یک‬ ‫در‬
16
‫را‬ ‫مستطیل‬ ، ‫میکنیم‬ ‫صحبت‬ ‫هندسی‬ ‫اشکال‬ ‫مورد‬ ‫در‬ ‫ما‬ ‫که‬ ‫زمانی‬ ‫معمول‬ ‫طور‬ ‫به‬‫یک‬
‫میدانیم‬ ‫مربع‬ ‫برای‬ ‫پایه‬ ‫کالس‬.‫کنید‬ ‫توجه‬ ‫زیر‬ ‫کد‬ ‫به‬:
‫اصل‬ ‫طبق‬ ‫اما‬LSP‫گفت‬ ‫توان‬ ‫نمی‬:
‫باشد؟؟‬ ‫داشته‬ ‫برابری‬ ‫نا‬ ‫عرض‬ ‫و‬ ‫طول‬ ‫میتواند‬ ‫مربع‬ ‫مگر‬
17
‫حل‬ ‫راه‬ ‫طبق‬ ‫مشکل‬ ‫حل‬LSP
‫یک‬‫کالس‬abstract‫را‬‫ایجاد‬‫و‬‫سپس‬
‫دوکالس‬Square‫و‬Rectangle‫را‬‫از‬‫آن‬‫مشتق‬
‫میکنیم‬
18
Interface Segregation Principle
‫متد‬ ‫به‬ ‫وابسته‬ ‫نباید‬ ‫ها‬‫کالینت‬‫هایی‬
‫سازی‬ ‫پیاده‬ ‫را‬ ‫آنها‬ ‫که‬ ‫باشند‬
‫کنند‬‫نمی‬
19
‫چاق‬ ‫واسط‬
‫وقتی‬‫کالسی‬‫یک‬‫واسط‬‫را‬‫پیاده‬‫سازی‬،‫کند‬‫می‬‫باید‬‫همه‬‫متدهای‬‫آن‬
‫را‬‫نیز‬‫پیاده‬‫سازی‬‫کند‬.‫حاال‬‫اگر‬‫خیلی‬‫از‬‫این‬‫متدها‬‫توسط‬‫این‬‫کالس‬
‫استفاده‬،‫نشود‬‫گوییم‬‫می‬‫که‬‫این‬‫کالس‬‫از‬‫مشکل‬‫واسط‬‫چاق‬‫رن‬‫ج‬
‫برد‬‫می‬.
‫کردن‬ ‫کوچک‬interface‫تبدیل‬ ‫و‬ ‫ها‬interface‫چند‬ ‫به‬ ‫بزرگ‬
interface‫کوچک‬
20
‫نقض‬ISP
‫این‬ ‫از‬ ‫فقط‬ ‫ما‬ ‫واقع‬ ‫در‬
function‫استفاده‬‫کنیم‬ ‫می‬
21
‫شده‬ ‫بازسازی‬‫خانگی‬ ‫حیوان‬
‫متد‬ ‫به‬ ‫واقع‬ ‫در‬ ‫ها‬ ‫کالس‬ ‫از‬ ‫هرکدام‬
‫باش‬ ‫داشته‬ ‫دسترسی‬ ‫باید‬ ‫که‬ ‫هایی‬‫ند‬
‫بیهوده‬ ‫تکرار‬ ‫از‬ ‫و‬ ‫دارند‬ ‫دسترسی‬
‫است‬ ‫شده‬ ‫جلوگیری‬
22
Dependency Inversion Principle
‫ی‬‫ا‬‫ه‬‫ل‬‫و‬‫ژ‬‫ا‬‫م‬ ‫ه‬‫ب‬ ‫د‬‫ی‬‫ا‬‫ب‬‫ن‬ ‫ال‬‫ا‬‫ب‬ ‫ح‬‫ط‬‫س‬ ‫ی‬‫ا‬‫ه‬ ‫ل‬‫و‬‫ژ‬‫ا‬‫م‬
‫د‬‫ی‬‫ا‬‫ب‬ ‫و‬‫د‬ ‫ر‬‫ه‬ ،‫د‬‫ن‬‫ش‬‫ا‬‫ب‬ ‫ه‬‫ت‬‫س‬‫ب‬‫ا‬‫و‬ ‫ن‬‫ی‬‫ی‬‫ا‬‫پ‬ ‫ح‬‫ط‬‫س‬‫ه‬‫ب‬
‫د‬‫ن‬‫ش‬‫ا‬‫ب‬ ‫ه‬‫ت‬‫س‬‫ب‬‫ا‬‫و‬ ‫ت‬‫ا‬‫ع‬‫ا‬‫ز‬‫ت‬‫ن‬‫ا‬.
23
loosely
coupled
tightly
coupled
‫از‬ ‫ها‬ ‫ماژول‬ ‫به‬ ‫دسترسی‬ ‫برای‬ ‫واقع‬ ‫در‬
‫کاه‬ ‫باعث‬ ‫که‬ ‫کنند‬ ‫می‬ ‫استفاده‬ ‫ها‬ ‫واسط‬‫ش‬
‫میش‬ ‫نویسی‬ ‫برنامه‬ ‫اجزای‬ ‫به‬ ‫وابستگی‬‫ود‬
‫طور‬ ‫به‬ ‫ها‬ ‫ماژول‬ ‫به‬ ‫دسترسی‬ ‫برای‬ ‫واقع‬ ‫در‬
‫ماژول‬ ‫از‬ ‫نمونه‬ ‫یک‬ ‫ایجاد‬ ‫به‬ ‫اقدام‬ ‫مستقیم‬
‫کرده‬
var obj=new AnimalClass()
‫را‬ ‫سیستم‬ ‫در‬ ‫تغییر‬ ‫نوع‬ ‫هر‬ ‫اتصال‬ ‫نوع‬ ‫این‬‫دچار‬
‫کرده‬ ‫مشکل‬.
24
‫نقص‬DIP
25
‫رعایت‬
‫اصل‬DIP
‫ارجاع‬ ‫طریق‬ ‫از‬ ‫واسط‬ ‫به‬ ‫وابستگی‬
(Dependency injection)
26
‫رعایت‬
‫اصل‬DIP
‫بری‬ ‫ارث‬ ‫طریق‬ ‫از‬ ‫واسط‬ ‫به‬ ‫وابستگی‬
‫منابع‬
•dotnettips.info
•‫کتاب‬Beginning SOLID Principles And Design
Patterns for Asp.Net Developers(Bipin Joshi)
27

More Related Content

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

solid - object oriented programming principle

  • 1. 1
  • 4. 4
  • 5. 5
  • 6. Single Responsibility Principle ‫کنی‬ ‫مسئولیتی‬ ‫تک‬ ‫را‬ ‫هایتان‬ ‫کالس‬‫د‬ ‫باشد‬ ‫داشته‬ ‫نقش‬ ‫یک‬ ‫باید‬ ‫فقط‬ ‫کالس‬ ‫یک‬ ‫و‬ ‫باشد‬ ‫داشته‬ ‫تغییر‬ ‫برای‬ ‫دلیل‬ ‫یک‬ ‫باید‬ ‫کالس‬ ‫یک‬ ‫های‬ ‫کالس‬ ‫به‬ ‫را‬ ‫مسئولیتی‬ ‫چند‬ ‫کالس‬ ‫یک‬ ‫کنید‬ ‫تقسیم‬ ‫دیگر‬ ‫کوچکتر‬ 6
  • 7. 7 SINGLE RESPONSIBILITY PRINCIPLE Just Because You Can, Doesn't Mean You Should
  • 8. ‫کالس‬ ‫چند‬ ‫به‬ ‫مسئولیتی‬ ‫چند‬ ‫کالس‬ ‫یک‬ ‫تبدیل‬ ‫مسئولیتی‬ ‫تک‬ ‫ب‬ ‫مثال‬ ‫میتوانیم‬ ‫منظور‬ ‫این‬ ‫به‬ ‫رسیدن‬ ‫برای‬‫را‬ ‫اال‬ ‫صورت‬ ‫به‬3‫کنیم‬ ‫ایجاد‬ ‫مختلف‬ ‫کالس‬ 8
  • 9. ‫اول‬ ‫تبدیل‬ ‫کالس‬Employee‫حاوی‬ ‫فقط‬ ‫که‬ Property‫است‬ ‫از‬ ‫غیر‬ ‫به‬ ‫یعنی‬Property‫ندارد‬ ‫وجود‬ ‫کالس‬ ‫این‬ ‫در‬ ‫دیگری‬ ‫چیز‬ 9
  • 10. ‫دوم‬ ‫تبدیل‬ ‫کالس‬EmployeeDB‫حاوی‬ ‫فقط‬ ‫که‬ method‫که‬ ‫هایی‬ ‫متد‬ ‫مثال‬ ‫هاست‬ ‫انجام‬ ‫دیتابیس‬ ‫برروی‬ ‫عملیاتی‬ ‫میدهند‬ 10
  • 11. ‫سوم‬ ‫تبدیل‬ ‫کالس‬EmployeeReport‫فقط‬ ‫که‬ ‫حاوی‬method‫عمل‬ ‫است‬ ‫هایی‬ ‫میدهند‬ ‫انجام‬ ‫را‬ ‫گیری‬ ‫گزارش‬ 11
  • 12. Open Closed Principle ‫شدن‬ ‫اضافه‬ ‫با‬ ‫که‬ ‫باشد‬ ‫ای‬ ‫گونه‬ ‫به‬ ‫باید‬ ‫طراحی‬‫یک‬ ‫نشوند‬ ‫مشکل‬ ‫دچار‬ ‫ها‬ ‫بخش‬ ‫مابقی‬ ‫جدید‬ ‫ویژگی‬ 12 ‫اصل‬OCP‫میگوید‬: "‫‌های‌نرم‌افزار‌باید‌برای‌تغییرات‌بسته‌و‌برای‌توسعه‌باز‌با‬‫ل‬‫ماژو‬‫شند‬." Software entities should be open for extension but closed for modification.
  • 13. ‫کنید‬ ‫توجه‬ ‫زیر‬ ‫مثال‬ ‫به‬: 13 ‫داریم‬ ‫ساختمان‬ ‫یک‬ ‫بگیرید‬ ‫نظر‬ ‫در‬ ‫خا‬ ‫دوم‬ ‫و‬ ‫اول‬ ‫ی‬‫طبقه‬ ‫بین‬ ‫طبقه‬ ‫یک‬ ‫میخواهید‬ ‫شما‬ ‫که‬ ‫میکنیم‬ ‫فرض‬‫ی‬‫نه‬ 2‫کنید‬ ‫اضافه‬ ‫خود‬ ‫ی‬‫طبقه‬.‫است؟‬ ‫پذیر‬ ‫امکان‬ ‫فکرمیکنید‬ ‫ها‬ ‫حل‬ ‫راه‬ ‫زمانی‬‫که‬‫برای‬‫اولین‬‫بار‬‫در‬‫حال‬‫ساخت‬‫خانه‬ ‫هستید‬‫آن‬‫را‬3‫طبقه‬‫بسازید‬‫و‬‫ی‬‫طبقه‬‫وسط‬‫ر‬‫ا‬ ‫خالی‬‫نگه‬‫دارید‬.‫اینطوری‬‫هر‬‫زمان‬‫که‬‫شما‬ ‫بخواهید‬‫میتوانید‬‫از‬‫آن‬‫استفاده‬‫کنید‬.‫به‬‫هر‬ ‫حال‬‫این‬‫هم‬‫یک‬‫راه‬‫حل‬‫است‬. ‫خراب‬‫کردن‬‫طبقه‬‫دوم‬‫و‬‫ساخت‬‫دو‬ ‫ی‬‫طبقه‬‫جدید‬‫که‬‫خوب‬‫اصال‬‫معقول‬‫نیس‬‫ت‬.
  • 15. ‫جایگز‬ ‫بتوانند‬ ‫باید‬ ‫ها‬ ‫کالس‬ ‫زیر‬‫ین‬ ‫شوند‬ ‫خود‬ ‫پایه‬ ‫نوع‬ 15 ‫واقعی‬ ‫جهان‬ ‫با‬ ‫مقایسه‬: ‫شغل‬‫یک‬‫پدر‬‫تجارت‬‫امالک‬‫است‬‫درحالی‬‫که‬‫پسرش‬ ‫دوست‬‫دارد‬‫فوتبالیست‬‫شود‬.‫یک‬‫پسر‬‫هیچگاه‬ ‫نمیتواند‬‫جایگزین‬‫پدرش‬،‫شود‬‫با‬‫اینکه‬‫که‬‫آنها‬‫به‬‫یک‬ ‫سلسله‬‫مراتب‬‫خانوادگی‬‫تعلق‬‫دارند‬. ‫میکنیم‬ ‫بررسی‬ ‫تر‬‫عمومی‬ ‫مثال‬ ‫یک‬ ‫در‬
  • 16. 16 ‫را‬ ‫مستطیل‬ ، ‫میکنیم‬ ‫صحبت‬ ‫هندسی‬ ‫اشکال‬ ‫مورد‬ ‫در‬ ‫ما‬ ‫که‬ ‫زمانی‬ ‫معمول‬ ‫طور‬ ‫به‬‫یک‬ ‫میدانیم‬ ‫مربع‬ ‫برای‬ ‫پایه‬ ‫کالس‬.‫کنید‬ ‫توجه‬ ‫زیر‬ ‫کد‬ ‫به‬: ‫اصل‬ ‫طبق‬ ‫اما‬LSP‫گفت‬ ‫توان‬ ‫نمی‬: ‫باشد؟؟‬ ‫داشته‬ ‫برابری‬ ‫نا‬ ‫عرض‬ ‫و‬ ‫طول‬ ‫میتواند‬ ‫مربع‬ ‫مگر‬
  • 17. 17 ‫حل‬ ‫راه‬ ‫طبق‬ ‫مشکل‬ ‫حل‬LSP ‫یک‬‫کالس‬abstract‫را‬‫ایجاد‬‫و‬‫سپس‬ ‫دوکالس‬Square‫و‬Rectangle‫را‬‫از‬‫آن‬‫مشتق‬ ‫میکنیم‬
  • 19. ‫متد‬ ‫به‬ ‫وابسته‬ ‫نباید‬ ‫ها‬‫کالینت‬‫هایی‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫آنها‬ ‫که‬ ‫باشند‬ ‫کنند‬‫نمی‬ 19 ‫چاق‬ ‫واسط‬ ‫وقتی‬‫کالسی‬‫یک‬‫واسط‬‫را‬‫پیاده‬‫سازی‬،‫کند‬‫می‬‫باید‬‫همه‬‫متدهای‬‫آن‬ ‫را‬‫نیز‬‫پیاده‬‫سازی‬‫کند‬.‫حاال‬‫اگر‬‫خیلی‬‫از‬‫این‬‫متدها‬‫توسط‬‫این‬‫کالس‬ ‫استفاده‬،‫نشود‬‫گوییم‬‫می‬‫که‬‫این‬‫کالس‬‫از‬‫مشکل‬‫واسط‬‫چاق‬‫رن‬‫ج‬ ‫برد‬‫می‬. ‫کردن‬ ‫کوچک‬interface‫تبدیل‬ ‫و‬ ‫ها‬interface‫چند‬ ‫به‬ ‫بزرگ‬ interface‫کوچک‬
  • 20. 20 ‫نقض‬ISP ‫این‬ ‫از‬ ‫فقط‬ ‫ما‬ ‫واقع‬ ‫در‬ function‫استفاده‬‫کنیم‬ ‫می‬
  • 21. 21 ‫شده‬ ‫بازسازی‬‫خانگی‬ ‫حیوان‬ ‫متد‬ ‫به‬ ‫واقع‬ ‫در‬ ‫ها‬ ‫کالس‬ ‫از‬ ‫هرکدام‬ ‫باش‬ ‫داشته‬ ‫دسترسی‬ ‫باید‬ ‫که‬ ‫هایی‬‫ند‬ ‫بیهوده‬ ‫تکرار‬ ‫از‬ ‫و‬ ‫دارند‬ ‫دسترسی‬ ‫است‬ ‫شده‬ ‫جلوگیری‬
  • 23. ‫ی‬‫ا‬‫ه‬‫ل‬‫و‬‫ژ‬‫ا‬‫م‬ ‫ه‬‫ب‬ ‫د‬‫ی‬‫ا‬‫ب‬‫ن‬ ‫ال‬‫ا‬‫ب‬ ‫ح‬‫ط‬‫س‬ ‫ی‬‫ا‬‫ه‬ ‫ل‬‫و‬‫ژ‬‫ا‬‫م‬ ‫د‬‫ی‬‫ا‬‫ب‬ ‫و‬‫د‬ ‫ر‬‫ه‬ ،‫د‬‫ن‬‫ش‬‫ا‬‫ب‬ ‫ه‬‫ت‬‫س‬‫ب‬‫ا‬‫و‬ ‫ن‬‫ی‬‫ی‬‫ا‬‫پ‬ ‫ح‬‫ط‬‫س‬‫ه‬‫ب‬ ‫د‬‫ن‬‫ش‬‫ا‬‫ب‬ ‫ه‬‫ت‬‫س‬‫ب‬‫ا‬‫و‬ ‫ت‬‫ا‬‫ع‬‫ا‬‫ز‬‫ت‬‫ن‬‫ا‬. 23 loosely coupled tightly coupled ‫از‬ ‫ها‬ ‫ماژول‬ ‫به‬ ‫دسترسی‬ ‫برای‬ ‫واقع‬ ‫در‬ ‫کاه‬ ‫باعث‬ ‫که‬ ‫کنند‬ ‫می‬ ‫استفاده‬ ‫ها‬ ‫واسط‬‫ش‬ ‫میش‬ ‫نویسی‬ ‫برنامه‬ ‫اجزای‬ ‫به‬ ‫وابستگی‬‫ود‬ ‫طور‬ ‫به‬ ‫ها‬ ‫ماژول‬ ‫به‬ ‫دسترسی‬ ‫برای‬ ‫واقع‬ ‫در‬ ‫ماژول‬ ‫از‬ ‫نمونه‬ ‫یک‬ ‫ایجاد‬ ‫به‬ ‫اقدام‬ ‫مستقیم‬ ‫کرده‬ var obj=new AnimalClass() ‫را‬ ‫سیستم‬ ‫در‬ ‫تغییر‬ ‫نوع‬ ‫هر‬ ‫اتصال‬ ‫نوع‬ ‫این‬‫دچار‬ ‫کرده‬ ‫مشکل‬.
  • 25. 25 ‫رعایت‬ ‫اصل‬DIP ‫ارجاع‬ ‫طریق‬ ‫از‬ ‫واسط‬ ‫به‬ ‫وابستگی‬ (Dependency injection)
  • 26. 26 ‫رعایت‬ ‫اصل‬DIP ‫بری‬ ‫ارث‬ ‫طریق‬ ‫از‬ ‫واسط‬ ‫به‬ ‫وابستگی‬
  • 27. ‫منابع‬ •dotnettips.info •‫کتاب‬Beginning SOLID Principles And Design Patterns for Asp.Net Developers(Bipin Joshi) 27