امروز موقعیت خوبی در یک برنامه ASP.NET پیش آمد که هم مزایای واقعی Decoupling (افتراق) را درک کنم و هم یک مثال ساده از آن اجرا کنم. یکی از امکاناتی که برای قسمت بندی بخشهای مختلف برنامه و امکان Code Reuse در ASP.NET فراهم شده است امکان User Control است. برنامهنویس میتواند یک User Control نوشته و آن را در چند جای مختلف استفاده کند. یا حتی صرفاً از آن برای کاهش پیچیدگی استفاده کند. یکی از کارهای رایجی که خودم به شخصه در User Controlها انجام میدهم ارتباط با کنترل والد یا همان کنترلی است که کنترل مورد نظر من در آن قرار دارد. در موردی که من امروز با آن برخورد کردم User Control به Parent خود دسترسی پیدا کرده و از طریق FindControl یکی از دکمههای آن را Disable/Enable میکرد. این موضوع به غیر نازیبایی و ناخوانایی که ایجاد کرده بود باعث شده بود وقتی از این کنترل در جای دیگری استفاده میکردم خطا به وجود بیاید چون آن دکمه دیگر در اینجا وجود نداشت.
اعمال Decoupling (افتراق) در اینجا خیلی ساده بود. در User Control مورد بحث یک Event تعریف کردم و Disable/Enable کردن دکمه مورد نظر را به خود ماژول استفاده کننده سپردم. این ماژول فقط در Event تعریف شده مشترک میشد و Disable/Enable کردن دکمه را خودش انجام میداد. ماژولهای دیگری هم که از User Control من استفاده میکردند هم صرفاً از همین Event استفاده میکنند. در واقع دیگر لازم نیست که User Control مورد نظر اطلاعی از وضعیت ماژولهای والد خود داشته باشد و این یعنی Decoupling (افتراق).