java开发框架 double_最简单的Java框架

框架framework的目的是定义骨架式方案,处理各种相同的底层细节;而开发人员使用框架时,能够依照自己的需求实现自己的功能——仅仅须要填入自己的东西/flesh。

最简单的框架,类似于JUnit,它有一个main(String[] args)启动本框架。假设是applet或GUI框架,就有太多底层细节须要处理。

package principle.callback.lower;

/**

* 最简单的Java框架

*

* @author yqj2065

* @version 2014.10

*/

public interface MyFramework{

public double op(double m,double n);

}最简单的框架就是一个函数接口lower.MyFramework,它对两个double操作后返回一个double值。

package principle.callback.lower;

import tool.God;

public class Main{

/**

* 命令行启动本框架。

* @param args 至少两个double

*/

public static void main(String[] args){

MyFramework f = (MyFramework)God.create("2065");

double d =f.op(Double.parseDouble(args[0]),Double.parseDouble(args[1]));

System.out.println(d);

}

/**

* 和JUnit一样,提供App调用的方式。

*/

public static double runFramework(MyFramework f,double x,double y){

return f.op(x,y);

}

}

注意,框架一般使用的技术就是反射和回调。

tool.God利用反射和配置文件创建某个对象,

Main调用f.op(double,double),详细的方法体由上层代码提供。

ok,框架已经设计完毕。

如今是我们应用程序猿干活的时候了。

fastcry.gif

应用程序猿最開始当然写HelloWorld,来熟悉框架...HelloWorld不可以和高傲的框架在一个包中。

package principle.callback;

public class HelloWorld implements principle.callback.lower.MyFramework{

public double op(double m,double n){

return m+n;

}

}应用程序猿还要依照框架的要求,自己写好配置文件。假设框架的文档说明:须要在my.properties中定义要创建的对象,于是我们在my.properties中加上:

2065=principle.callback.HelloWorld

接下来在命令行中执行框架,比如:

E:\designPattern>java principle.callback.lower.Main 1.2 3.4

4.6

有时候,我们应用程序猿在应用程序中启动或调用框架,也能够:

package principle.callback;

import tool.God;

import principle.callback.lower.MyFramework;

import principle.callback.lower.Main;

public class App{

public static void main(String[] args){

MyFramework f = (MyFramework)God.create("2065");

double d = Main.runFramework(f,1.2,3.4);

System.out.println(d);

}

}当然,设计App的程序猿和设计HelloWorld的程序猿同病相怜,自己人就不用反射了:

public static void test(){

double d = Main.runFramework(new HelloWorld(),1,3);

System.out.println(d);

MyFramework f = (double m,double n)->{return m * n ;};

d = Main.runFramework(f,1,3);

System.out.println(d);

f = (m,n)->{return m +2*n ;};

d = Main.runFramework(f,1,3);

System.out.println(d);

}输出:

4.0

3.0

7.0

回调使得编写上层模块的程序猿有了新的体验——填空式编程。

这就有了库与框架的差别——上层模块的程序猿直接调用的,属于库函数;要求上层模块的程序猿提供的回调函数的,属于框架。

假设我们通吃上层和下层,设计框架时使用回调机制;假设我们让愚蠢的应用程序猿填空,哈哈,我们告诉他们一个术语——控制反转。

假设我们是框架的应用程序猿,...好吧,我们也设计一个框架,控制反转。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值