Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
# هدف واسط یکپارچه‌ای را برای مجموعه‌ای از واسط‌ها در زیر سیستم، ارائه می‌دهد. این الگو واسط سطح-بالاتری را تعریف می‌کند که استفاده از زیرسیستم را ساده‌تر می‌کند.

ساختار

Facade UML

نکات طراحی

الگوی طراحی Facade، اینترفیس را ساده‌تر می‌کند.

زمانی از این الگو استفاده کنید که

  • نیاز به واسط ساده‌ای دارید که دسترسی به سیستم پیچیده را فراهم کند.
  • نیاز به کاهش کوپلینگ (اتصال‌ها) بین پیاده‌سازی‌های سیستم و کارخواه‌ها دارید.
  • نیاز به لایه‌بندی زیرسیستم‌ها دارید.

اجزاء الگو

  • Facade
  • Subsystem classes

Law of Demeter (LoD) or Principle of Least Knowledge

تنها با دوستان بی‌واسطهٔ خود مذاکره کنید. این اصل یکی از روش‌های ایجاد Loose Coupling است.

تنها متدهایی را صدا بزنید که متعلق به

  1. شیء خودتان باشد.
  2. آبجت‌هایی که توسط پارامتر به شیء شما منتقل شده‌اند.
  3. هر شیء‌ای که خودتان تولید یا نمونه‌سازی می‌کنید.
  4. کامپوننت‌های خودتان (HAS-A)

هیچ کدام یک از راهنماهای بالا عنوان نمی‌کند که شما می‌توانید متدهای یک شیء که توسط متدهای دیگر برگردانده می‌شود را صدا بزنید، مثلاً کد زیر خلاف این اصل است:

```Java public float getTemp() { return station.getThermometer().getTemperature(); } ```
یا مثلاً کد معروف جاوا:
```Java System.out.println(); ```
# مثال‌های واقعی
- javax.faces.context.FacesContext, it internally uses among others the abstract/interface types LifeCycle, ViewHandler, NavigationHandler and many more without that the enduser has to worry about it (which are however overrideable by injection). - javax.faces.context.ExternalContext, which internally uses ServletContext, HttpSession, HttpServletRequest, HttpServletResponse, etc.