`

如何设计一款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 是一个非常流行的 JavaScript 库,它简化了 DOM 操作、事件处理以及动画效果。本文将探讨如何使用 jQuery 来合并表格中相同文本的相邻单元格,这是在展示数据时提高可读性和美观度的一种常见...

    Java 网摘 经典的总结

    【Java 网摘经典总结】 Java 网摘中提到的核心知识点主要集中在Socket编程上,这是Java进行网络通信的基础。Socket,又称“套接字”,是计算机网络中进程间通信的一种方式,它允许两个网络应用程序之间进行双向通信...

    Java学习必得(网摘)

    Java学习是成为一个专业Java开发者的基石,而"Java学习必得(网摘)"这份文档则是对Java学习路径的一个全面概述。以下将详细讲解其中提到的关键知识点: 1. **语法理解**:Java语法是编程的基础,熟悉并能理解错误...

    JAVA面试陷阱(网摘)

    【JAVA面试陷阱详解】 在Java面试中,面试官常常会设置一些陷阱问题,考察候选人的基础知识和理解深度。以下是一些常见的陷阱问题及其解析: 1. **final, finally, finalize的区别** - `final`:这是一个修饰符,...

    百亿网摘完整无错版

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

    网摘精灵软件包1.5

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

    加入网摘插件 v1.0 通用版

    【加入网摘插件 v1.0 通用版】是一个旨在帮助网站所有者提升其在线可见性和用户参与度的工具。这款插件的核心功能是使用户能够方便地将网站内容添加到他们的网络收藏夹或网摘站点,从而促进网站的宣传和推广。尤其...

    php网摘程序

    总结起来,PHP网摘程序是一个结合了Web技术、数据库管理和用户交互设计的复杂系统,它为用户提供了一种有效管理网络信息的工具。通过理解和利用这些知识点,开发者可以创建出满足用户需求、高效且安全的网摘服务。

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

    《咖啡屋网摘联盟程序 v6.0 终极无错误版》是一款专为网络爱好者设计的开源软件,集成了用户注册与互动功能,将网摘分享提升到了一个新的层次。这款程序的出现满足了广大用户对更加完善、功能更丰富的网摘平台的需求...

    PHP免费网摘程序

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

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

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

    天空网摘 v120606

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

    本科毕业设计--基于javaee的个人数字图书馆的设计与实现.doc

    系统的技术架构基于 Java EE,使用 Struts、Hibernate 和 Freemarker 等主流框架和组件,实现了一个基于 Web 的个人数字图书馆系统。 系统的设计和实现考虑了以下几个方面: 1. 系统的安全性:系统使用了 HTTPS ...

    JAVA学习总大全 - 分享

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

    天空网摘 v20110624.rar

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

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

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

    天空网摘 V120606.rar

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

    学士学位论文--基于javaee的个人数字图书馆的设计与实现.doc

    个人数字图书馆的设计与实现基于Java EE,使用了Struts、Hibernate和Freemarker等主流框架。Struts是一个基于MVC模式的Web应用程序框架,used to build fast, scalable, and secure web applications。Hibernate是一...

    jsp网摘系统源代码

    【JSP网摘系统源代码】是一个基于Java技术开发的Web应用程序,主要使用JSP(JavaServer Pages)作为视图层技术,为用户提供一个在线收藏、管理和分享网络资源的平台。这种系统通常包括用户注册、登录、添加摘录、...

Global site tag (gtag.js) - Google Analytics