مکانیسم نخکشی (Threading) در برنامهنویسی روشی است برای به پیش بردن همزمان (Multi-Task) چندین فرآیند مشابه و یا مرتبط بدون آنکه لزوماً نیاز به فراخوانیهای متعدد و یا ترتیبی از آن فرآیندها مطرح باشد. همچنین هنگامیکه مدیریت موقعیتهای خاص زمانی در اجرای برنامه ضرورت دارد استفاده از Threadها توسط برنامهنویسان در دستور کار قرار میگیرد. به طور کلی دو وضعیت کاری در توسعه برنامه نیاز به نخکشی دارد: 1- زمانی که مدیریت زمانی کارها در توسعه کلاس برنامهنویسی ضرورت دارد: در اینجا یک راهحل خوب پیادهسازی واسط Runnable در تعریف کلاس برنامهنویسی است تا با دسترسی به متدهایی که برای کار با Thread به آنها نیاز است، بتوان برنامهنویسی در سطح کلاس انجام داد. شکل سمت چپ نمونه ای از این پیادهسازی را نشان میدهد. 2- هنگامیکه کلاس برنامهنویسی قرار است مدیریت زمانی را برای اجزای دیگری مدیریت نماید. در این وضعیت میتوان مستقیماً از کلاس Thread نمونهسازی انجام داده و از نمونه ایجاد شده برای زمانبندی کارهای اشیای دیگر بهره برد. شکل سمت راست نمونه ای از این پیادهسازی را نشان میدهد. (برای نمایش تصویر با وضوح بیشتر اینجا و یا روی تصویر کلیک نمایید). هر Thread از لحظه ایجاد تا به انتها رسیدن چرخه حیات مشخصی را طی مینماید. در نسخههای پیشین Java برنامهنویسان امکان کنترل این چرخه حیات را به صورت دستی دارا بودند. اما از آنجا که مدیریت زمانی برنامهها در عملکرد کلی JVM تأثیرگذار است؛ امروزه استفاده از همه متدهای کار با Thread توصیه نمیشود. شکل بعدی چرخه حیات یک Thread را از لحظه ایجاد در سیستم تا به انتها رسیدن به نمایش میگذارد |
الگوی MVC روشی در توسعه نرمافزار است که برای بهبود نگهداشت (Maintainability) سیستم قابل توصیه است. هدف MVC کاهش پیچیدگی طراحی الگوریتم و افزایش انعطافپذیری و نگهداشتپذیری Source Codeها است. همچنین از این Pattern برای ساده سازی طراحی در سیستمهای مستقل از پلتفرم و Self-Organize استفاده میشود. چرخه کاری در MVC به شرح زیر است:
توصیف MVC با مثال سادهتر از به کار بردن ادبیات فنی سنگین (نظیر آنچه در بالا ذکر شد) میباشد. یک عکاس را به همراه دوربینش در استودیوی عکاسی در نظر بگیرید که مطابق خواسته مشتری قرار است از یک جعبه عکس بگیرد. جعبه در اینجا نقش Model را بازی میکند؛ عکاس Controller است و دوربین نقش View را ایفا خواهد کرد. به دلیل آنکه جعبه هیچ درکی از عکاس و دوربین ندارد کاملا مستقل خواهد بود. این استقلال کاری به عکاس اجازه میدهد تا بتواند مطابق خواست خودش دور تا دور جعبه چرخ بزند و از هر چشمانداز و زاویهای که خواست عکس تهیه نماید. معماریهای Non-MVC تمایل دارند اجزای کاری را به صورت یکپارچه در نظر بگیرند. اگر جعبه، عکاس و دوربین اشیاء کاری مشابهی باشند، به ازای هر بار گرفتن عکس مجبورهستیم این اشیاء در کنار همدیگر قرار داده و Re-Build نماییم. همچنین خود پدیده گرفتن عکس در مثال مذکور مانند نقاشی است که تلاش دارد از چهره خودش پرتره بکشد؛ و لزوماً چنین کاری همیشه ساده نیست. منابع: http://st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html http://programmers.stackexchange.com/questions/127624/what-is-mvc-really |