`

如何设计一款Java框架?-网摘

    博客分类:
  • Java
 
阅读更多

也许你会好奇框架是如何工作的?本文将通过一款简单的框架案例来演示框架的工作原理。

框架目标

首先,我们要明确为什么需要框架(除了当作库)?框架的目标是为了定义一个过程,旨在让开发者基于个性化需求上实现某些功能。换句话说,框架是可被应用开发者定制的骨架。

在下面的示例中,第3类作为定义框架的一部分,第4类是用作框架客户端代码。

Main.java是框架的整个入口,这一点不能改变。

 

1
2
3
4
5
6
7
//imagine this is the entry point for a framework, it can not be changed
public class Main {
    public static void main(String[] args) {
        Human h = new Human(new Walk());
        h.doMove();    
    }
}

Move.java是Hook。该Hook允许开发者可根据自己的需求来定义/扩展功能。

 

 

1
2
3
public abstract class Move {
    public abstract void action();
}

Human.java是个模板,用来映射框架的工作原理。

 

 

1
2
3
4
5
6
7
8
9
10
11
public class Human {
    private Move move;
  
    public Human(Move m){
        this.move = m;
    }
  
    public void doMove(){
        this.move.action();
    }
}

这款简单的框架允许并要求开发者扩展“Move” 类。实际上,在这款简单的框架中,action()方法是开发者唯一能更改的地方。

 

 

不同的“action” 可编译成不同的目标,比如,在下面的例子中打印输出“5 miles per hour”,你也可以将其定义为“50 miles per hour”。

1
2
3
4
5
6
7
8
public class Walk extends Move {
  
    @Override
    public void action() {
        // TODO Auto-generated method stub
        System.out.println("5 miles per hour - it is slow!");
    }
}

结束语:

这里的示例只演示了一个简单的模板和Hook工作原理。当然,一个真正的框架要比这个复杂的多,它不仅包含像template-temple之间的关系;还包括非常复杂的进程,比如如何有效地提高性能和编程的可用性。

分享到:
评论

相关推荐

    Jquery合并单元格--网摘

    Jquery合并单元格--摘自caojin723的博客

    Java 网摘 经典的总结

    Java 网摘 Java 网摘 经典的总结 Java 网摘 经典的总结

    网摘集合网摘集合网摘集合网摘集合

    网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合...

    百亿网摘完整无错版

    百亿网摘整站 后台功能 --------------------- 基本信息 管理站点的基本信息 栏目管理 栏目分类 网摘管理 已推荐网摘 推荐网摘 首页生成 重新生成页面 审核网摘 管理网摘 模版管理 模版管理 用户管理 管理员修改 ...

    JAVA面试陷阱(网摘)

    JAVA面试陷阱是本人从网上摘得,为了换点资源分

    网摘精灵软件包1.5

    网摘精灵是一款网站推广网站,这个软件利用网摘网站点多面广的优势,把网站的精华内容提交到网摘站。 目前网络上网摘类站点很多,每个网摘站也都有自己特定的访问群体。把网站的内容提交到多个网摘站,可以将内容...

    Java学习必得(网摘)

    此为一份word文档的资料,是关于Java学习范围的总结。

    PHP免费网摘程序

    1、把文件上穿上去以后,在phpmyadmin里边 建立一个数据库。假设是 pictop。 然后把sql文件mmei8.sql导进去。 2、修改数据库配置文件,conn.php.修改网摘配置文件 include/setup.php。 3、后台路径admin/default...

    天空网摘 v120606

    另外,如果需要针对搜索引擎进行优化,请把Url.asp文件里的iframe框架去掉改为链接模式,也还可以增加相关盈利的广告代码。 “天空网摘”程序分为免费共享版和80元付费后台功能完整版(包含数据更新服务),前者...

    JAVA学习总大全 - 分享

    我的CSDN学习收藏网摘链接,适合JAVA学者,如果不适合,请砸砖,砸鸡蛋。 请看清楚, 是我的, 意思就是我在华为学习的JAVA.... 请不要误会了. 那个linux大全是我不小心弄上去的.. 不好意思.

    天空网摘 v20110624.rar

    另外,如果需要针对搜索引擎进行优化,请把Url.asp文件里的iframe框架去掉改为链接模式,也还可以增加相关盈利的广告代码。 “天空网摘”程序分为免费共享版和80元付费后台功能完整版(包含数据更新服务),前者...

    天空网摘 V120606.rar

    目标 利用网摘建站,打造最便捷的资讯服务!最适合于做小型SEO网站。 适用范围 新闻娱乐、专业学术、地方门户、行业资讯等相关网站建设。 参考范例:电子书藏家 初始化 注册用户:天空 密码:admin 登录:Login....

    PHP免费网摘程序(源代码)

    1、把文件上穿上去以后,在phpmyadmin里边 建立一个数据库。假设是 pictop。 然后把sql文件mmei8.sql导进去。 2、修改数据库配置文件,conn.php.修改网摘配置文件 include/setup.php。 3、后台路径admin/default....

    【PHP项目源码-毕业设计期末大作业】PHP网摘程序_zhai.zip

    PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端...

    咖啡屋网摘联盟程序 v6.0 终极无错误版

    大家盼望已久的功能终于推出了,带有注册的功能,相当于一个完整的网摘,此次改动较大,加入了大家强烈要求的注册互动功能,成为了一个不仅仅能,而且能摘网摘.

    康网整站-蓝彩博客-在线设计-在线学院-blog-bbs.rar

    修正修正了一个查看会员出错的问题; * 20. 增加**志发表断点功能; * 21. 增加开通图片友情链接; * 22. 修正了365网摘的错误; * 23. 增加了增加了语言过滤功能 * 24. 增加了IP屏蔽功能 * 25. 修正跨站偷取Cookie...

    博客、相册、文件、网摘、迷你博客、论坛、活动、圈子

    SpaceBuilder是一款基于asp.net业内领先的Web2.0社区平台。结合博客、相册、文件、网摘、迷你博客、论坛、活动、圈子、资讯等应用模块,可以快速的搭建具有SNS特征的在线社区。借助SpaceBuilder平台的服务(用户、...

    ASP实例开发源码-麦布简易网摘源码 asp版.zip

    ASP实例开发源码—麦布简易网摘源码 asp版.zip ASP实例开发源码—麦布简易网摘源码 asp版.zip ASP实例开发源码—麦布简易网摘源码 asp版.zip

    23个收藏到网摘的16x16图标及代码

    23个收藏到网摘的16x16图标及代码

Global site tag (gtag.js) - Google Analytics