HamidReza Ireh

حمیدرضا ایره

HamidReza Ireh

حمیدرضا ایره

مقدمه

ابتدا مقدمه‌ای در مورد کلاس‌های abstract می‌‌آوریم. از کلاس‌ها نمی‌توان یک نمونه ساخت؛‌ اما سوال این است که چرا ما به کلاس‌هایی نیاز داریم که نمی‌توان یک نمونه از آنها ایجاد کرد؟ این کلاس‌ها قابلیت ارث‌بری دارند، به طور کلی نمی‌توان از آنها یک نمونه ایجاد کرد، ولی کلاس‌های دیگر می‌توانند از آن به ارث برسند.

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

الگوی Composite در عمل یک Collection Pattern (الگوی مجموعه‌ای) است. که می‌توان در درون آن ترکیبی از زیر مجموعه‌های مختلف را قرار داد و سپس هر زیر مجموعه را به نوبه خود فراخوانی نمود. به بیان دیگر الگوی Composite به ما کمک می‌کند که در یک ساختار درختی بتوانیم مجموعه ای (Collection ی)، از بخشی از آبجکت‌های سلسله مراتبی را نمایش دهیم. این الگو به Client اجازه می‌دهد، که رفتار یکسانی نسبت به یک Collection ی از آبجکت‌ها یا یک آبجکت تنها داشته باشد.

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

یک الگوی رایج که توسط کلاینت‌های SOA استفاده می‌گردد، الگوی Facade است. الگوی Facade برای ساده سازی واسط یک زیر سیستم یا گروهی از زیرسیستم‌ها به کار می‌رود و به کلاینت، یک API ساده و شفاف می‌دهد تا با سایر API‌ها سازگار باشد.

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

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

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