الگوی استخر اشیاء، جزو الگوهای تکوینی است و کار آن جلوگیری از ایجاد اشیاء تکراری و محافظت از به هدر رفتن حافظه است. نحوه کار این الگو بدین شکل است که وقتی کاربر درخواست نمونهای از یک شیء را میدهد، بعد از اتمام کار، شیء نابود نمیشود؛ بلکه به استخر بازگشت داده میشود تا در درخواستهای آینده، مجددا مورد استفاده قرار گیرد. این کار موجب عدم هدر رفتن حافظه و همچنین بالا رفتن کارآیی برنامه میگردد. این الگو به خصوص برای اشیایی که مدت کوتاهی م ...
فرض کنید میخواهید برای تمام دکمههای حذف، در کل پروژه، قبل از انجام عمل اصلی، یک confirm را به کاربر نشان دهید تا اگر کاربر بر روی کلید تایید، کلیک نمود، عمل مورد نظر انجام شود. برای چنین کاری در یک layout اصلی (و یا یک فایل js ) کدی شبیه به قطعه کد زیر را نوشتهایم: $(document).ready(function () {
$(document).on('click', '.confirm', function () {
alert("Clicked Me !");
});
});
حال فرض کنید د ...
قسمت اول این مطلب را در اینجا میتوانید مطالعه کنید. از سه سال قبل تا به این تاریخ، فرمت زیرنویسهای این سایت به صورت JSON تغییر پیدا کردهاست و یک چنین ساختار جدیدی را دارد: {
"userIsAuthorizedForCourseTranscripts": false,
"modules": [
{
"title": "Course Overview",
"clips": [
{
"title": "Course Overview",
"playerParameter ...
مدتی بود که سرعت آغاز ویژوال استودیو و همچنین تمام برنامههای دات نتی موجود، به نحو عجیبی کاهش پیدا کرده بودند. آغاز ویژوال استودیو گاهی تا 3 دقیقه هم طول میکشید. تا اینکه آغاز یک برنامه سادهی دات نتی را توسط برنامهی معروف Procmon بررسی کردم:
بله. همانطور که مشاهده میکنید، چون تعداد فونتهای نصب شدهی بر روی سیستم من بیش از اندازه است (1800 فونت)، این مشکل رخ میدهد. هر بار آغاز برنامههای دات نت، به همراه بررسی ت ...
عملگرهای تولید Generation Operator
عملگرهای تولید، برای ما توالی ایجاد میکنند و تفاوتهای عمدهای با سایر عملگرهای پرس و جو دارند که در بخش زیر به آنها اشاره میکنیم:
1- هیچ توالی ورودی را دریافت نمیکنند.
2- این عملگرها بصورت متد الحاقی پیاده سازی نشدهاند و بصورت متدهای استاتیک در کلاس Enumerable قرار گرفتهاند.
امضاء زیر مربوط به متد Empty میباشد: ...
این الگو شاید به نظر ساده برسد، ولی در بعضی موارد میتواند در سطوح بالاتر، کدهای تمیزتر و خلوتتری را در اختیار شما بگذارد. در مورد این الگو، در کتاب توسعه چابک عمو باب نیز آمده است. بسیاری ممکن است نسبت به این الگو جبهه بگیرند و بگویند که بررسی نال بودن یک شیء بهتر است و یا حتی رخ دادن خطای Null Pointer Exception در برنامه باعث میشود بتوانیم باگها را پیدا کنیم. در جواب باید گفت که این الگو قرار نیست در همه جا مورد استفاده قرار گیرد. ...
این الگو یکی دیگر از الگوهای رفتاری است که به قاعده OCP یا Open Closed Principle کمک بسیاری میکند. این الگو برای زمانی مناسب است که ما سعی بر این داریم تا یک سری الگوریتمهای متفاوت را بر روی یک سری از اشیاء پیاده سازی کنیم. به عنوان مثال تصور کنید که ما در یک سازمان افراد مختلفی را از مدیریت اصلی گرفته، تا سادهترین کارمندان، داریم و برای محاسبه حقوق و مالیات و ... نیاز است تا برای هر کدام دستور العملهایی را اجرا کنیم و ممکن است در آی ...
الگوی وضعیت، یکی از الگوهای رفتاری Gang Of Four است و بسیار شبیه به الگوی Strategy میباشد؛ ولی با کپسوله سازی بیشتر. در الگوی استراتژی تغییر وضعیت از بیرون کلاس اعمال مید ولی در الگوی وضعیت، بر اساس تغییر وضعیت درونی خودش صورت میگیرد.
یکی از استفادههای این الگو برای مثال در پلیرهاست که وضعیت پخش را چون Play,Pause و ... در خود دارند. در اینجا هم از این مثال استفاده میکنیم:
ابتدا یک اینترفیس برای وضعیت خود بسازید ...
همه کاربران کامپیوتر در ایران به خوبی با کلمه پروکسی آشنا هستند. پروکسی به معنی نماینده یا واسط است و پروکسی واسطی است بین ما و شیء اصلی. پروکسی در شبکه به این معنی است که سیستم شما به یک سیستم واسط متصل شده است که از طریق پروکسی محدودیتهای دسترسی برای آن تعریف شود. در اینجا هم پروکسی در واقع به همین منظور استفاده میشود. در تعدادی از کامنتهای سایت خوانده بودم دوستان در مورد اصول SOLID و Refactoring بحث میکردند که آیا انجام عمل اعتبار ...
یکی از الگوهای ساختاری Gang Of Four، استفاده از الگوی Facade است که پیچیدگیهای یک سیستم را مخفی میسازد و با ارائه یک پیاده سازی سادهتر، استفاده از آن و تست آن را راحتتر میسازد. این الگو یک کلاس یا یک سیستمی را با متدها و رویدادهایی ساده، در اختیار ما قرار میدهد و در یک لحظه، تنها با یک کلاس واحد سر و کله میزنیم. احتمالا بسیاری از شما از این الگو استفاده کردهاید، ولی شاید با اسم آن آشنا نبودهاید.
کار این کلاس در واقع ترکیب کل ...