框架框架的目的是定义基于框架的方案并处理相同的基本细节。 如果开发人员使用框架,——可以根据自己的需要实现自己的功能,只需填写自己的/flesh即可。
最简单的框架类似于JUnit。 存在用于启动此框架的main[]args。 假设applet或GUI框架,需要处理的基础细节太多。
package principle.callback.lower;
//*
*最简单的Java框架
*
* @author yqj2065
* @版本2014.10
*/
公共接口我的框架{
publicdoubleop (双精度,双精度n );
}最简单的框架是函数接口lower.MyFramework,它在两个双精度操作之后返回一个双精度值。
package principle.callback.lower;
导入工具. god;
公共类主{
//*
*命令行启动此框架。
* @param args至少两个双精度
*/
publicstaticvoidmain (字符串[ ] args ) {
myframeworkf=(我的框架) god.create ) (2065 );
双精度=f.op (double.parsedouble (args [0],double.parse double ) args[1] );
系统. out.println (d;
}
//*
与JUnit一样,它提供了调用APP的方法。
*/
publicstaticdoublerunframework (myframeworkf、double x、double y ) {
returnf.op(x,y );
}
}
请注意,框架中常用的技术是反射和回调。
tool.God使用反射和轮廓创建对象,
Main调用f.op (双精度,双精度),详细的方法主体由上级代码提供。
ok,框架已经设计好了。
现在是我们的APP应用猴子工作的时候了。
一开始,APP应用猴子当然会写HelloWorld,熟悉框架. HelloWorld不能和傲慢的框架一起放在包里。
package principle.callback;
publicclasshelloworldimplementsprinciple.callback.lower.my framework {
publicdoubleop (双精度,双精度n ) {
return m n;
}
} APP应用猴子还会根据框架的要求自己创建性能分析。 框架文档说明:由于需要定义要在my.properties中创建的对象,因此将它们添加到my.properties中,如下所示:
2065=principle.callback.hello world
然后,在命令行上运行以下框架:
e :designpatternjavaprinciple.callback.lower.main1. 23.4
4.6
在某些情况下,即使APP应用程序猴子在APP应用程序中启动或调用框架,也可以执行以下操作
package principle.callback;
导入工具. god;
import principle.callback.lower.my framework;
import principle.callback.lower.main;
公共类应用程序{
publicstaticvoidmain (字符串[ ] args ) {
myframeworkf=(我的框架) god.create ) (2065 );
doubled=main.runframework(f,1.2,3.4 );
系统. out.println (d;
}
}当然,设计APP的程序猿和设计万圣节世界的程序猿同病相怜,自己不需要反射:
公共静态语音测试(
双精度=main.run framework (new hello world ),1,3 );
系统. out.println (d;
myframeworkf=(双精度,双精度n )-{return m * n; (;
d=main.runframework(f,1,3 );
系统. out.println (d;
f=(m,n )-{return m 2*n; (;
d=main.runframework(f,1,3 );
系统. out.println (d;
}输出:
4.0
3.0
7.0
回调让编写上层模块的程序猿进行了新的体验——填鸭式编程。
这是与库存在框架差异的——上层模块的程序猿直接调用的,请求属于库函数的上层模块的程序猿提供的回调函数,属于框架。
假设我们吃上层和下层,在设计框架时使用回调机制; 假设我们让愚蠢的APP猴子填空。 哈哈,我们教他们——这个术语来控制翻转。
如果我们是框架的APP应用猴子的话……就好了。 我们也设计框架来控制翻转。