+1 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

الگوی طراحی Strategy چیست و چگونه پیاده سازی می شود؟ کاربرد عملی این الگوی طراحی در چه مواردی است؟

1 پاسخ

+4 امتیاز
قبل توسط (1.4هزار امتیاز)
ویرایش شده قبل توسط
 
بهترین پاسخ

این الگوی طراحی این امکان را می‌دهد که یک عملیات را با الگوریتم‌های مختلف پیاده‌سازی کرده و آن را بتوانیم با این الگوریتم‌ها اجرا کنیم (یعنی می‌توانیم هر وقت که خواستیم الگوریتم را عوض کرده و با الگوریتم دیگری عملیات را اجرا کنیم).

نمودار کلاس این الگوی طراحی (یک interface مشترک وجود دارد که هر الگوریتم، به عنوان یک کلاس آن را پیاده‌سازی می‌کند):

مثال (مرتب‌سازی آرایه با الگوریتم‌های مختلف):

interface SortStrategy
{
    void sort(Double[] array, boolean reverse);
}
 
class BubbleSort implements SortStrategy
{
    @Override
    public void sort(Double[] array, boolean reverse)
    {
        // TODO bubble-sort implementation
    }
}
 
class InsertionSort implements SortStrategy
{
    @Override
    public void sort(Double[] array, boolean reverse)
    {
        // TODO insertion-sort implementation
    }
}
 
class QuickSort implements SortStrategy
{
    @Override
    public void sort(Double[] array, boolean reverse)
    {
        // TODO quick-sort implementation
    }
}

نمونه‌ی استفاده :

public class Test
{
	public static void main(String[] args)
	{
		Double[] array1 = new Double[10];
		Double[] array2 = new Double[10];
		// fill arrays
		SortStrategy sortStrategy = new BubbleSort();
		sortStrategy.sort(array1,false);//sorts array1 with bubble sort algorithm
		sortStrategy = new QuickSort();
		sortStrategy.sort(array2,false);//sorts array2 with quick sort algorithm
	}
}

مثال عملی‌تر:

فرض کنید یه سرویس میخواهیم که فایل‌های متنی رو encrypt کنه. دو تا استراتژی مختلف درنظر میگیریم:

  1. برای فایل‌های کوچک، از روشی استفاده می‌کنیم که تمام کارها رو در memory انجام میده
  2. برای فایل‌های بزرگ، از روشی استفاده می‌کنیم که (مثلا) از hard هم استفاده میکنه

سوالات مشابه

0 امتیاز
0 پاسخ 450 بازدید
+2 امتیاز
2 پاسخ 3.2هزار بازدید
0 امتیاز
1 پاسخ 1.5هزار بازدید
+2 امتیاز
1 پاسخ 951 بازدید
+1 امتیاز
2 پاسخ 3.9هزار بازدید
+1 امتیاز
1 پاسخ 2.2هزار بازدید
+1 امتیاز
0 پاسخ 432 بازدید
+1 امتیاز
1 پاسخ 1.9هزار بازدید
...