【实验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的高校教材管理系统