HamidReza Ireh

حمیدرضا ایره

HamidReza Ireh

حمیدرضا ایره

۸ مطلب در شهریور ۱۳۹۵ ثبت شده است

جاوا دارای قابلیت بارگذاری پویا می‌باشد، یعنی در زمان اجرای یک برنامه وقتی که به یک کلاس احتیاج می‌شود آنرا بارگذاری می‌کند. که میتوان اصطلاحا Lazy Loading هم نامید که در ORM هایی مثل Hibernate هم استفاده می‌شود. Class Loader ها کلاس‌های شامل بایت کدها را در یک منطقه‌ای به اسم Runtime Data Areas قرار می‌دهد و موتور اجرا کننده (Execution Engine) بایت کدها را اجرا می‌کند.

معمولاً انتخاب یک License برای انتشار پروژه‌های اوپن سورس و یا محتوا کار سختی به نظر میرسد؛ برای همین تصمیم گرفتم تفاوت لایسنس‌های رایج را بررسی نموده و آن‌ها را طوری مطرح کنم که همه سریع و راحت بتوانند متوجه بشوند:

اصل اول: Encapsulate what varies
"آنچه را که تغییر می‌کند مشخص و جدا کن یا به عبارتی آنرا کپسوله کن"
برای آنکه بتوانیم کدی منعطف، قابل استفاده مجدد و خوانا داشته باشیم، ابتدا باید بخش‌های ثابت و متغیر کد را تشخیص دهیم و کاری کنیم تا بخش ثابت، بدون تکرار در جای جای برنامه استفاده شود و سپس برای بخش متغیر برنامه ریزی کنیم.

حوزه: Class
هدف: Behavioral
نقش الگو

بعضی از مردم نمی‌توانند زندگی را بدون قهوه تصور کنند و بعضی دیگر زندگی را بدون چای نمی‌توانند تصور کنند. ولی جزء تشکیل دهنده اصلی هر دو کافئین است. شباهت‌های دیگر نیز بین این دو مورد وجود دارد. روش ساخت هر دوی آنها تقریبا مشابه است. شما اغلب موارد به ترتیب زیر عمل می‌کنید.

حوزه: Object
هدف: Behavioral
نقش الگو

این الگو یک راه حل‌ برای حالتی است که، در آن درخواست‌هایی از کاربر به برنامه می‌رسد و باید با توجه به شرایطی به این درخواست‌ها پاسخ داده شود و در موارد زیر کاربرد دارد.

حوزه: Object
هدف: Structural
نقش الگو

پروکسی به معنی نماینده یا واسط است و پروکسی واسطی است بین ما و شیء اصلی. پروکسی در شبکه به این معنی است که سیستم شما به یک سیستم واسط متصل شده است که از طریق پروکسی محدودیت‌های دسترسی برای آن تعریف شود. در اینجا هم پروکسی در واقع به همین منظور استفاده می‌شود. به عنوان مثال فرض کنید که شما یک برنامه ساده کار با فایل را دارید. اگر بخواهید اعتبارسنجی‌هایی را برای آن تعریف کنید، بهتر است اینکار را به یک پروکسی بسپارید تا شیء گرایی بهتری را داشته باشید.