【C言語によるデザインパターン】Strategy

Strategyの概要

Strategyとは,アルゴリズムをクライアントから引き離す。
同じインターフェースをもつ派生クラスにアルゴリズムを記述するというもの.

詳細は下記参考. yusuke-ujitoko.hatenablog.com

Cでの実装

#include <stdio.h>

#define SORT(x) sort_##x##_()

void sort_quick_(){ printf("Quick sort is selected.\n"); }
void sort_bubble_(){ printf("Bubble sort is selected.\n"); }

int main()
{
    char input = '!';

    while(input != 'q'){
        system("cls");
        printf("Choose a kind of sorting:\n(a) Quick sort\n(b) Bubble sort\n(q) Quit\n");
        input = getchar();

        if(input == 'a'){
            SORT(quick);
        }else if(input == 'b'){
            SORT(bubble);
        }else continue;

        system("pause");
    }
    return 0;
}

yusuke-ujitoko.hatenablog.com