در قسمت قبلی در رابطه با اینکه اينترفيس ها را به عنوان سرويس در نظر بگيريم صحبت شد و گفتيم که به عنوان مثال در صورتيکه شما از اينترفيس IComparable به ارث بريد و متد CompareTo را پياده سازی کنيد آنگاه مي توانيد از سرويس Sort در کلاس ArrayList استفاده کنيد. اما چرا؟

در واقع وقتي شما متد Sort را فراخواني مي کنيد در کلاس ArrayList فرض را بر این مي گذارد که تک تک اشياي داخل آرایه از این اينترفيس به ارث رفته اند در نتيجه شي داخل آرايه را (که يک object مي باشد) Cast به IComparable می کند در نتيجه مي تواند از متد CompareTo استفاده کرده و مقايسه مورد نظر را انجام دهد. حالا در صورتيکه شيء شما از اين اينترفيس به ارث نرفته باشد يک خطا از نوع InvalidOperationException دريافت خواهید کرد.



نمونه های بسياري وجود دارند که شما با پياده سازي يک يا چند Interface امکان استفاده از يک موضوع (به صورت سرويس) را بهره مند مي شويد. البته به اين نکته توجه داشته باشيد که روش پياده سازي و Logic آن کاملا در اختيار شماست و در صورتيکه درست پياده سازي نشود مسئوليت خطا های احتمالی و يا عملکرد نادرست به عهده شما مي باشد.

فرض کنيد که شما يک کلاس داريد که وظيفه آن چاپ کردن اطلاعات اشياء ديگر توسط يک چاپگر مي باشد. نکته مهم اين است که شما مي خواهيد اين سرويس (یعني چاپ کردن توسط يک چاپگر خاص) را در اختيار همه قرار دهيد. براي همين منظور کافيست که يک interface طراحي کنيد و يک متد به نام Print در آن تعريف کنيد.



حالا کافيست که در اين کلاس از کاربران انتظار ارسال کلاس هايي را داشته باشيد که از اين اينترفيس به ارث رفته اند و در صورتيکه يک شيء به متد شما ارسال شود که از اين اينترفيس به ارث نرفته باشد شما هم يک خطا از نوع InvalidOperationException پرتاب خواهيد کرد.



مثال هاي بسياري از اين دست در رابطه با استفاده از اينترفيس ها به عنوان سرويس مي توان نوشت. در پست بعدي در رابطه با استفاده از اينترفيس ها برای پياده سازي توارث چندگانه خواهم نوشت.

بارگزاري مثال
ادامه دارد....