آموزش ها

Decorator Pattern

توسط احد

ارسال شده در تاریخ ۲۵ بهمن,۱۳۹۵



ما از این الگوی طراحی زمانی استفاده می کنیم که می خواهیم مسئولیت هایی را به کلاس پایه اضافه کنیم، اما نمی خواهیم کد کلاس پایه را دستکاری کنیم. اگر فکر می کنید که با sub-class ها می توانید به ویژگی های اضافه برسیم، به کدهای زیر توجه داشته باشید.

ما یک کلاس داریم که مسئولیت تولید محتوی یک ایمیل را بر عهده دارد.

ادامه مطلب

Factory Pattern

توسط احد

ارسال شده در تاریخ ۲۲ بهمن,۱۳۹۵



در این بخش ما می خواهیم در مورد ایجاد اشیا توسط الگوی طراحی factory صحبت کنیم. اغلب ما می خواهیم بصورت کامل با انواع مختلف اشیا در راه های یکسان تعامل برقرار کنیم. یک مثال قوی اتصال به دیتابیس می باشد. ما می خواهیم قابلیت اتصال به دیتابیس را بدون در نظر گرفتن اینکه MySQL، Oracle یا SQL server باشد توسط روش یکسانی داشته باشیم. این ممکن است کمی مشکل باشد، زیرا ایجاد Object های مختلف ممکن است متفاوت باشد. ما به راهی نیاز داریم که جزئیات پیاده سازی ایجاد اشیا را مخفی کنیم و به ما اجازه بدهد تا شی مورد نظر را بسازیم که این دقیقا کاری است که الگوی طراحی factory برای ما انجام می دهد. این الگو اغلب توسط الگوهای دیگر استفاده می شود، جایی که می خواهید با اشیا مختلف دقیقا توسط یک راه یکسان تعامل برقرار کنید.

ادامه مطلب

Adapter Pattern

توسط احد

ارسال شده در تاریخ ۲۱ بهمن,۱۳۹۵



ما سیستم خود را می سازیم، اما بخش های مختلف شبیه به هم نیستند. یک component داریم که به سه ورودی نیاز دارد با type های خاص و یک component دیگر داریم که به دو ورودی با type های خاص نیاز دارد. اولین فکری که به ذهنمان می رسد این است که بصورت جداگانه از این component ها استفاده کنیم و ورودی های مورد نیاز آن ها را تنظیم کنیم. اما این ایده خوبی نیست، بهتر است بگوییم این ایده وحشتناک است. برای حل این مشکل به یک لایه مترجم یا به اصطلاح translation احتیاج داریم و اینجا جایی است که الگوی Adapter مطرح می شود.

شبیه به یک translation layer یا لایه مترجم عمل می کند. Adapter در دنیای واقعی نیز وجود دارد. هنگامی که می خواهیم لپ تاپ خود را به projector وصل کنیم، بیشتر projector ها تنها ورودی VGA دارند، در حالیکه بیشتر لپ تاپ ها یک اتصال دیگری دارند، بنابراین برای استفاده از projector نیاز به یک Adapter داریم که اتصال را از یک فرمت به فرمت دیگری تبدیل کند.

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

ادامه مطلب

Active Record Pattern

توسط احد

ارسال شده در تاریخ ۱۵ بهمن,۱۳۹۵



ابتدا یک دیتابیس با نام active_record_db ایجاد می کنیم و یک جدول با نام users با چهار فیلد id, name, family, email ایجاد می کنیم. می خواهیم از الگوی active record برای دستیابی به این جدول استفاده کنیم.

یک کلاس با نام User ایجاد می کنیم. 

ادامه مطلب

مفهوم namespace در php

توسط احد

ارسال شده در تاریخ ۲۸ مهر,۱۳۹۵



یکی از ویژگی های مهمی که در PHP 5.3 اضافه شد فضای نام یا namespace بود. معنای کلی namespace کپسوله سازی آیتم ها است. namespace در PHP مانند ساختار دایرکتوری در سیستم عامل ها است. به عنوان مثال فایل foo.txt می تواند در دو پوشه /home/greg و /home/other قرار داشته باشد اما دو فایل با نام foo.txt نمی تواند در یک پوشه وجود داشته باشد. علاوه بر این برای دسترسی به فایل foo.txt خارج از پوشه /home/greg باید مسیر آن را هم ذکر کنیم بصورت /home/greg/foo.txt این همانند قانون استفاده از namespace در برنامه نویسی است. فضای نامی که بصورت پیش فرض در آن کد نویسی می کنیم فضای سراسری یا global space نام دارد در این namespace امکان تعریف دو کلاس با نام یکسان را نداریم این موضوع در مورد نام توابع و ثابت ها هم صدق می کند.

ادامه مطلب