اصول SOLID:
.
Single responsibility
Open / Closed Principle (OCP)
Liskov Substitution Principle (LSP)
Interface Segregation Principle (ISP)
هر کلاسی که یک interface را پیاده سازی می کند،باید همه متد های آن را پیاده کند و همه متد ها برای آن کلاس با معنی باشند.
در غیر این صورت برای کلاس مذکور نیاز به interface جدیدی خواهیم داشت ( که احتمالا parent برای interfaceقبلی است.)
Dependency Inversion Principle
پیاده سازی باید به گونه ای باشد که تا جای ممکن وابسه به کلاس های abstractباشیم تا این که به کلاس های low-level و مشخص.
با این کار امکان گسترش و تعمیم پیاده سازی بالا می رود.
اصول GRASP:
Creator
Information Expert
نیازی نیست که همه کلاس ها همه نوع کار را انجام بدهند! نیاز به کلاس هایی داریم که وظایف تخصصی را برعهده بگیرند و بقیه entity ها این کار را به آن ها بسپارند.
مثلا داشتن کلاس DatabaseUtils و …
Low Coupling
Controller
Cohesion
Polymorphism
Indirection
Pure Fabrication
Protected Variation
ارتباط بین کلاس ها باید با یک api ثابتی همواره برقرار باشد و مخاطب های یک کلاس صرفا این api را بشناسند.
این کار باعث می شود که تغییر در logic و داخل یک کلاس باعث تغییر در بقیه کلاس ها و entity های سیستم نشود.
منابع:
https://dzone.com/articles/solid-grasp-and-other-basic-principles-of-object-o