اصول طراحی شی‌ء گرا: OO Design Principles - قسمت دوم
اصل چهارم: Starve for loosely coupled designs "به دنبال طراحی با اتصال سست بین اجزا باش" اتصال بین اجزای برنامه نویسی باعث سخت‌تر شدن مدیریت تغییرات می‌شود؛ چرا که با تغییر یک بخش، بخش‌های متصل نیز دچار مشکل خواهند شد. اتصال‌ها از لحاظ نوع قدرت متفاوتند و اساسا سیستمی بدون اتصال وجود ندارد. لذا باید به دنبال یک طراحی با کمترین میزان قدرت اتصال یا همان سست اتصال باشیم. تا به اینجا ، اصل‌های دوم و سوم ما ...
اصول طراحی شی گرا SOLID - #بخش پنجم اصل DIP
بخش‌های پیشین : اصول طراحی شی گرا SOLID - #بخش اول اصل SRP اصول طراحی شی گرا SOLID - #بخش دوم اصل OCP اصول طراحی شی گرا SOLID - #بخش سوم اصل LSP اصول طراحی شی گرا SOLID - #بخش چهارم اصل ISP اصل 5) D – DIP– Dependency Inversion principle مقایسه با دنیای واقعی: همان مثال کامپیوتر را دوباره در نظر بگیرید.این کامپیوتر دارای قطعات مختلفی مانند RAM ، هارد دیسک، CD ROM و ... است که هر ک ...
اصول طراحی شی گرا SOLID - #بخش چهارم اصل ISP
بخش‌های پیشین : اصول طراحی شی گرا SOLID - #بخش اول اصل SRP اصول طراحی شی گرا SOLID - #بخش دوم اصل OCP اصول طراحی شی گرا SOLID - #بخش سوم اصل LSP اصل 4) I – ISP– Interface Segregation principle مقایسه با دنیای واقعی: بیایید فکر کنیم شما یک کامپیوتر دسکتاپ جدید خریداری کرده اید.شما یک زوج پورت USP، چند پورت سریال، یک پورت VGA و ... را پیدا میکنید. اگر شما بدنه‌ ...
اصول طراحی شی گرا SOLID - #بخش سوم اصل LSP
بخش‌های پیشین : اصول طراحی شی گرا SOLID - #بخش اول اصل SRP اصول طراحی شی گرا SOLID - #بخش دوم اصل OCP اصل 3 ) L – LSP – Liskov substitution principle اصل LSP میگوید : "زیر کلاس‌ها باید بتوانند جایگزین نوع پایه‌ی خود باشند". مقایسه با جهان واقعی : شغل یک پدر تجارت املاک است درحالی که پسرش دوست دارد فوتبالیست شود. یک پسر هیچگاه نمیتواند جایگزین پدرش شود، با اینکه ک ...
اصول طراحی شی گرا SOLID - #بخش دوم اصل OCP
در قسمت قبل در مورد اصل Single responsibility Principle یا به اختصار SRP صحبت شد. در این قسمت قصد داریم اصل دوم از اصول SOLID را مورد بررسی قرار دهیم. اصل 2 ) O - OCP – Open Close Principle فرض میکنیم که شما میخواهید یک طبقه بین طبقه‌ی اول و دوم خانه‌ی 2 طبقه‌ی خود اضافه کنید. فکرمیکنید امکان پذیر است؟ راه حل هایی که ممکن است به ذهن شما خطور کنند : 1- زمانی که برای اولین بار در حال ساخت خانه هستید ...
اصول طراحی شی گرا SOLID - #بخش اول اصل SRP
مخاطب چه کسی است؟ این مقاله برای کسانی در نظر گرفته شده است که حداقل پیش زمینه ای در مورد برنامه نویسی شی گرا داشته باشند.کسانی که تفاوت بین کلاس‌ها و اشیاء را میدانند و میتوانند در مورد ارکان پایه ای برنامه نویسی شی گرایی نظیر : کپسوله سازی (Encapsulation) ، کلاس‌های انتزاعی (Abstraction) ، چند ریختی (Polymorphism ) ، ارث بری (Inheritance) و... صحبت کنند. مقدمه : در جهان شی گرا ما فقط اشیاء را میبینیم که با یکدیگر د ...
الگوی طراحی Factory Method به همراه مثال
الگوی طراحی Factory Method به همراه مثال عناوین : · تعریف Factory Method · دیاگرام UML · شرکت کنندگان در UML · مثالی از Factory Pattern در #C تعریف الگوی Factory Method : این الگو پیچیدگی ایجاد اشیاء بر ...
الگوی استراتژی - Strategy Pattern
الگوی استراتژی (Strategy) اجازه می­دهد که یک الگوریتم در یک کلاس بسته بندی شود و در زمان اجرا برای تغییر رفتار یک شیئ تعویض شود. برای مثال فرض کنید که ما در حال طراحی یک برنامه مسیریابی برای یک شبکه هستیم. همانطوریکه می‌دانیم برای مسیر یابی الگوریتم‌های مختلفی وجود دارد که هر کدام دارای مزایا و معایبی هستند. و با توجه به وضعیت موجود شبکه یا عملی که قرار است انجام پذیرد باید الگوریتمی را که دارای بال ...
معماری لایه بندی نرم افزار #4
UIدر نهایت نوبت به طراحی و کدنویسی UI می‌رسد تا بتوانیم محصولات را به کاربر نمایش دهیم. اما قبل از شروع باید موضوعی را یادآوری کنم. اگر به یاد داشته باشید، در کلاس ProductService موجود در لایه‌ی Domain، از طریق یکی از روشهای الگوی Dependency Injection به نام Constructor Injection، فیلدی از نوع IProductRepository را مقداردهی نمودیم. حال زمانی که بخواهیم نمونه ای را از ProductService ایجاد نماییم، باید به عنوان پارامتر ورودی سازن ...
معماری لایه بندی نرم افزار #3
Service Layerنقش لایه‌ی سرویس این است که به عنوان یک مدخل ورودی به برنامه کاربردی عمل کند. در برخی مواقع این لایه را به عنوان لایه‌ی Facade نیز می‌شناسند. این لایه، داده‌ها را در قالب یک نوع داده ای قوی (Strongly Typed) به نام View Model، برای لایه‌ی Presentation فراهم می‌کند. کلاس View Model یک Strongly Typed محسوب می‌شود که نماهای خاصی از داده‌ها را که متفاوت از دید یا نمای تجاری آن است، بصورت بهینه ارائه می‌نماید. در مورد الگوی Vi ...