ماژول ZF2Base

zendframework_logo

بعد از مدت ها ماژول اولیه ای که توی پروژه ها استفاده میکردم رو ارتقا دادم و zf2base رو برای Zend Framework 2 نوشتم. کار این ماژول تعیین و بررسی سطح دسترسی ها به هر ماژول کنترلر یا اکشن و یا متد هست بدون اینکه مجبور باشید کدی توی ماژول های دیگه بنویسید. (بیشتر…)

Singleton Pattern

singleton-pattern

از این الگو زمانی استفاده می‌شود که قصد داشته باشید از یک کلاس خاص فقط و فقط یک شی در طول پروژه وجود داشته باشد و در تمامی قسمت‌های مختلف پروژه از این شی استفاده شود. با این الگو میتوان مفهوم Lazy Loading را نیز در طول پروژه پیاده‌سازی کرد. (به این معنی که بارگزاری کلاس مورد نظر در حافظه زمانی انجام می‌شود که اولین فراخوانی به آن کلاس انجام شود، و تا زمانی که اولین فراخوانی انجام نشود کلاس مورد نظر در حافظه بارگزاری نخواهد شد.) (بیشتر…)

Prototype Pattern

prototype-pattern

با استفاده از این الگو به جای ایجاد متعدد یک کلاس در بخش‌های مختلف پروژه، میتوانید از اولین شی ایجاد شده، کپی‌برداری کنید. به این ترتیب که کلاس مورد نظر شامل متدی با نام clone می‌باشد. یکی از دلایل استفاده از این الگو این است که Client در گیر نحوه ایجاد کلاس اصلی نباشد و تنها در صورت نیاز، از کلاس مورد نظر یک کپی تهیه نماید. دلیل دیگر استفاده از این روش، افزایش نا محسوس سرعت اجرای برنامه می‌باشد. (بیشتر…)

Factory Method Pattern

factory-method-pattern

این الگو همانند الگوی Abstract Factory میباشد با این تفاوت که هر کلاس Factory معمولاً تنها برای ایجاد یک کلاس خاص استفاده میشود. در برخی موارد کلاس Factory شامل یک متد استاتیک می‌باشد که وظیفه ایجاد کلاس مورد نظر بر اساس پارامتر ها را بر عهده دارد. (بیشتر…)

مفهوم SOLID در برنامه نویسی – DIP

CopyClassLooseCoupling

DIP مخفف Dependency Inversion Principle و مفهومی است که وابستگی مستقیم کلاس های سطح بالا را به کلاس های سطح پایین منع میکند. به این منظور که اگر کلاس خاصی(high-level) که از کلاس های دیگر(low-level) استفاده می کند وابستگی مستقیمی با کلاس های low-level داشته باشد سبب بروز این مشکل خواهد شد که اگر کلاس low-level دیگری به مجموعه افزوده شود اجبارا کلاس high-level نیز بایستی تغییر کند. DIP برای حل این مشکل به وجود آمده است. (بیشتر…)

Abstract Factory Pattern

abstract-factory-pattern

این الگو برای ایجاد کلاس‌های مشابه هم استفاده می‌شود تا وابستگی بین استفاده کننده (Client) و تأمین کننده کمتر شود. در‌واقع یک کلاس وظیفه ایجاد کلاس‌های دیگر را به عهده میگیرد. البته الزاماً این الگو شامل تنها یک کلاس سازنده نیست بلکه هر کلاس سازنده وظیفه ایجاد کلاس‌های مشابه هم را دارد و ممکن است در یک پروژه خاص چندین کلاس سازنده مختلف داشته باشیم. (بیشتر…)

Builder Pattern

builder-pattern

این الگو برای ایجاد کلاس‌هایی استفاده می‌شود که یا پیچیدگی زیادی دارند و یا تعداد پارامتر های آن‌ برای ایجاد کلاس زیاد و پیچیده باشد. به طور کلی به جای ایجاد کلاس به صورت تک مرحله‌ای، کلاس مربوطه به صورت مرحله به مرحله و با ارسال پارامتر در مرحله های مختلف ایجاد می شود. (بیشتر…)

الگوهای طراحی چیست؟

designpattern

طی این مطالب سعی دارم به شرح الگوهای طراحی بپردازم. قبل از هر چیزی باید با مفهوم Design Patterns آشنا بشیم و بدونیم که دلیل وجود همچین الگوهایی چیه؟ در برنامه نویسی همه ما گاهی دچار مشکلات عجیب و غریبی می شیم که حل کردنشون زمان زیادی ازمون میگیره. برخی از این مشکلات هستند که خیلی بین برنامه نویسان متداولند. برای همین منظور الگوهای طراحی یا Design Patterns به وجود اومدند که هر کدوم از این الگو ها به منظور برطرف کردن مشکلات متداول برنامه نویسی ایجاد شدن. (بیشتر…)

مفهوم SOLID در برنامه نویسی – ISP

segregatedInterfaces

یکی از اصول دیگر برنامه نویسی شی گرا و اصل سوم SOLID مفهوم ISP یا Interface Segregation Principle می باشد, به این معنی که برای استفاده از اینترفیس ها آنها را باید به اجزای کوچکتری تقسیم کرد. وقتی یک کلاس از یک اینترفیس بزرگ استفاده میکند ممکن است برخی از این متد ها در کلاس مورد نظر قابل استفاده نباشند. اما وقتی یک اینترفیس بزرگ به چند اینترفیس کوچک تقسیم می شود هر کلاس میتواند در صورتی که به اینترفیس خاصی نیاز داشت از آن استفاده نماید. با این امکان اگرچه تعداد اینترفیس ها بیشتر می شوند و ممکن است تکرار رخ دهد اما به دلیل اینکه منطق برنامه ما در اینترفیس ها اجرا نمی شود میتوان این مسئله را نادیده گرفت. در نهایت با رعایت این اصل امکان دیباگ و بررسی کد ها سرعت بیشتری خواهد داشت. (بیشتر…)

مفهوم SOLID در برنامه نویسی – LSP

solid-OOP

یکی از اصول دیگر برنامه نویسی شی گرا و اصل سوم SOLID مفهوم LSP یا Liskov Substitution Principle می باشد, به این معنی که هیچ کلاسی نباید رفتار کلاس والد را تغییر دهد. برای رعایت این اصل باید در نظر داشته باشیم که هر کلاسی میتواند از کلاس دیگر ارث بری کند به شرطی که رفتار کلاس والد را تغییر ندهند. (بیشتر…)