【实验2:框架设计者 C语言版】
【实验2:框架设计者 C语言版】
为什么要提供实验2的C语言版呢?是希望你们自己体会控制反转/Ioc的含义、依赖倒置原则(Dependency Inversion Principle、DIP) 的荒谬。对照Java版看解说,这里仅仅说操作过程,
排序测试框架的C语言实现,其实与【实验1:回调机制的实现】的C语言版,没有原理上的差别。不过本实现包含测试流程的控制模块,更有框架的味道。
在Pelles c开发环境,创建一个Win64Static library(lib)项目,项目名myLib,以lib方式提供框架。myLib.lib地位如同Java的123.jar。
//test.c
#include <stdio.h>
typedef int * (*How_sort)( int* arr,int len); // 比较 IntSort的抽象方法
void test(int* arr,int len,How_sort how){ //比较 SortTest的测试方法
int* r =how(arr,len);
for (int i = 0;i<len;i++){
printf ("%d " , r[i]);
}
}
//test.h
typedef int * (*How_sort)( int* arr,int len); //函数指针的种类
void test(int* arr,int len,How_sort how);
打开ood项目,通过Project- Workspace- add projects to workspaces将myLib加入Workspace。在main.c文件中编写相关代码:
#include <stdio.h>
//实验2 框架
#pragma comment(lib, "D:\clang\myLib\myLib.lib")
#include "D:clangmyLib est.h"
void swap(int* arr ,int one, int two){ //可以放在框架中
if(one == two){return;}
int temp = arr[one];
arr[one] = arr[two];
arr[two] = temp;
}
int* bubbleSort( int* arr,int len){ //比较BubbleSort的实现方法
for(int i = 0 ; i<len-1; i++){
for(int j = 0 ; j < len-i-1;j++){
if(arr[j] > arr[j+1]){ //冒泡
swap(arr ,j, j+1);
}
}
}
return arr;
}
void testFramework(void){ //比较Main类的测试
int arr [ 5 ]={5,4,,3,2,1};
test(arr,5,bubbleSort);
}
int main(void){
testFramework();
return 0;
}
下一篇:
基于SSM的高校教材管理系统
