پروژه های اندروید و Design Pattern
با سلام
من می خوام درر برنامه ای که می نویسم از Design Pattern ها استفاده کنم . ویدیو ها رو خریدم تا نصف دیدم ولی نمی دونم آیا شما این نوع طراحی رو در ویدئو ها آموزش دادین ؟ در کدام یک و اینکه mvp , mvc, mvvm ,...
دیزاین پترن هستند ؟ با معماری فرق میکنن؟؟؟
همانطور که آقا کمال فرمودن دیزاین پترن راه حل ها و روش هایی برای مشکلاتی که در برنامه نویسی پیش میاد ست و به خصوص دربرنامه نویسی شئ گرا از این روشهای برنامه نویسی استفاده میشه.
مثلا ما میخوایم از یک کلاس یک آبجکت بیشتر ساخته نشه (ازش نیو نشه) به دلایلی مثلا یک کلاس صفحه نمایش داریم که نباید بیشتر یک نمونه ازش ساخته بشه (چون یک صفحه نمایش بیشتر نداریم) یا یک کلید پخش مدیا پلیر داریم که نمیشه چند کلید پخش ازش بسازند (چون چندتا مدیا رو هم پخش میشه) و.. که بوسیله دیزاین پترن سینگلتون (تکی) کاری میکنیم که از اون کلاس یکی بیشتر ساخته نشه (بدین صورت کلی که سازنده و کاسنتراکتور رو پرایوت و خصوصی تعریف میکنیم و یک متود پابلیک استاتیک تعریف کرده که خروجیش همون کلاسه تو اون متود بررسی میکنیم که اگر ساخته نشده یکی ازش میسازیم و کلاس ساخته شده رو از متود خروجی میدیم بخوای برات مینویسم)
ما سه شاخه الگوی طراحی (دیزاین پترن) داریم
1- آفرینشی یا Creational: مثل همون سینگلتون یا بیلدر (سازنده) که گفتند. آفرینشی راجع به روش های ایجاد کلاسها و.. ست. که مشهورهاش :
Singleton (یگانه)
MultiTon (چندگانه مثل یگانه فقط برای هر آیدی از کلاس یک نمونه بیشتر ساخته نمیشه مثلا برای شاتر هر یکبار بیشتر ساخته نشه)
Pool (استخر ساخت یک شئ و استفاده از آن که در حین استفاده دیگه کسی نتونه از اون استفاده کنه مانند کانکشن استرینگ)
Factory Method (متود کارخانه رابطی برای ساخت اشیاء تعریف میکنه و به زیرکلاسها اجازه میده درباره اینکه چه شیئ رو نمونه سازی کنند تصمیم بگیرند)
Abstract Factory (کارخانه انتزاعی رابطی برای ساخت خانواده هایی از اشیاء مرتبط تدارک میبیند)
Builder (سازنده که فرایند ساخت شئ پیچیده رو از نمایشش جدا میکنه تا از اون برای ساخت انوع بازنمایی ازش استفاده بشه)
Prototype (نمونه اولیه ایجاد اشیاء جدید با استفاده از این نمونه ی تعریف شدی تا حدودی مثل کپی کردن کلاس سربازهای دشمن)
2- ساختاری یا Structural: درباره ی ساختار کلاس و متود و.. مثل وراثت ست مثل دیزاین پترن Adapter که مثل آداپتر تبدیل سه شاخه به دو شاخه کلاسی که سه شاخه دو شاخه تبدیل کنه. مشهورهاش :
Adapter (آداپتور)
Bridge (پل)
Composite (ساختار درختی)
Decorator (دکوراتیو)
Facade (نما (کلمه ی فرانسوی ست فِساد)
Flyweight (سبک وزن در لیست ویوی اندروید از این الگو استفاده میشه که برای فراهم نمودن تعداد زیادی از اشیاء به صورت سبک و کارا استفاده میشود)
Proxy (نماینده)
3- رفتاری یا Behavioral: درباره ارتباط بین کلاسهاست مثلا از روی کلاسی چند نمونه ساختیم و میخواهیم وقتی یکی از این نمونه ها تغییر کرد بقیه مطلع شوند که از دیزاین پترن مشاهده گر (Observer) استفاده میکنیم مشهوراش:
Chain of Responsibility (زنجیره ای از پاسخ دهنده ها)
Command (درخواست)
Interpreter (مفسر)
Iterator (تکرار کننده)
Mediator (میانجی و واسطه)
Memento (یادگاری)
Observer (مشاهده گر و نظاره گر در ام وی سی برای نظارت کردن در تغییرات ام وی سی و دبلیو پی وی سی استفاده میشه)
State (حالت)
Strategy (استراتژی)
Template Method (متود قالب)
Visitor (ناظر)
اگر مایل بودی باز بیشتر توضیح بدم این جزو اون چیزاییه که تا باهاش برخورد نکنی قشنگ متوجه ش نمیشی و معمولا برنامه نویسی با چندتاش که باهاش سر وکار دارند کارمیکنن بقیه زمانی استفاده میشه که بهش نیاز پیدا کنی (البته الگوهای طراحی خیلی بیشتر از ایناست ولی اولیه ها اینا هستند)
همونطور که خودتون اطلاع دارین تو اندروید دیزاین پترن خاصی وجود نداره و تمام عناصر به همدیگه متصل هستند شما تو اکتویویتی یا فرگمنتاتون هم کارهای مربوط به ویو رو انجام میدیدن هم محاسبات و هم رو داده هاتون کار مکنید مثل کار با مدل ها و دیتابیستون و این گاها کار رو سخت میکنه و راه حل این مشکل دیزاین پترن ها هستند.در حال حاضر مطرح ترین دیزاین پترن برای اندروید mvp هستش که مزیت های زیادی رو با خودش به همراه میاره.مثل امکان استفاده از unit test ، نگهداری راحتتر پروژه،استفاده بهتر از تکنیک تزریق وابستگی ها و... فکر نمیکنم داخل این سری از آموزش ها به این مسائل پرداخته شده باشه ولی کلی مطلب میتونید در این رابطه پیدا کنید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .