当前位置:首页 > 实用技巧 >

怎样写一个java框架(java 自己动手写框架)

来源:原点资讯(www.yd166.com)时间:2023-11-21 08:37:24作者:YD166手机阅读>>

点击上方"Java全栈技术"关注我们,每天学习一个java知识点

天才程序员去创造工具,大众程序员去使用工具, 我想大部分人都处于"使用" 这个层次。

那些创造了语言、系统、工具、框架的程序员是我们崇拜的对象,也是我们努力奋斗的目标, 希望有一天我们也能像他们那样, 攀上代码的高峰, 会当凌绝顶, 一览众山小

创造是一件很难的事情,但是模仿却简单的多, 今天聊一点框架相关的知识,那些想自己写框架的,想重复造轮子的同学可以看看。

别误会,我说的是重复造轮子,不是重复发明轮子。 重复造轮子能让你体会一下创造者的艰辛和快乐,提升一下自己的内功和境界。

所谓的框架,和工具不同, 工具拿过来直接可用, 而框架只是个半成品。 换句话说就是大牛写的框架代码,加上我们写的代码,才能形成一个系统,才能运行起来。

你想一想,单独的Struts, Spring ,Hibernate能运行吗? 肯定不行吧。框架是个半成品(但不是残次品), 我们要想用起来,非得自己填上代码不可。

这就有点难搞了,那些大牛们写框架的时候得考虑用户怎么配合才行, 所以得定义好边界, 哪些是框架的任务,哪些是程序员应该做的扩展。 我们想修改框架的东西,门儿都没有,对修改完全封闭。 但是框架又提供了一些地方让程序员扩展, 这就是著名的面向对象设计的原则之一: Open-Close原则

模板方法

想达成这个目标,最容易的方式就是"继承", 在Java世界常用的就是抽象类。

抽象类有这样的好处:

1. 没法实例化去执行(符合框架半成品的特点)

2. 可以被继承, 抽象方法需要使用者去实现。

3. 可以在抽象类中写代码,写框架相关的代码, 还可以调用抽象方法。

完美达到了Open-Close原则, 举个例子会看得更加清楚一些。

假设你要写一个MVC的框架, 你希望定义一个抽象类AbstractAction,把一些框架应该做的事封装起来,比如抽取HttpRequest的参数,形成一个Map 以便传递给具体的Action使用,这些操作和步骤是子类不能修改的-- Close

怎样写一个java框架,java 自己动手写框架(1)

虽然是封闭的, 但是框架的使用者却可以去继承这类,实现那个抽象的execute 方法, 放置自己的业务代码。 ---Open

当然它除了实现自己的代码之外,没法修改AbstractAction中的任何东西, 或者说,对超类一无所知。 -- 又是Close

怎样写一个java框架,java 自己动手写框架(2)

这样一来,你的框架就得到了这个效果: Don't call me , I'll call you (别打电话找我,我会去找你的)(注: 这就是Struts1 背后的思想)

反射 声明+约定

上面的方法看起来很美, 但是有个巨大的问题,就是对客户侵入性太强。

表现在两个方面:

(1) 子类(业务类)很不自由, 被迫继承一个它不想继承的类

(2) 难于做单元测试,你也许注意到了, AbstractAction 其实是依赖HttpRequest, 和HttpResponse的,这两个对象一般需要web 容器跑起来才能得到。

很容易想到, 如果业务类是一个普通的POJO多好:

怎样写一个java框架,java 自己动手写框架(3)

如果我不说,估计你会以为这是一个普通的java class , 实际上,它就是一个普通java class。

它虽然叫做LoginAction , 但是和框架一毛钱关系也没有, 毕竟它啥也没有继承, 你的框架怎么知道它就是一个潜在的Action 类?这时候需要一点点声明性的工作, 告诉框架,这是一个Action 类, 声明可以用xml ,也可以用注解,例如用xml声明的话,使用框架的程序员需要这么做

怎样写一个java框架,java 自己动手写框架(4)

首页 12下一页

栏目热文

java学会主流框架就可以了吗(java什么框架最好用)

java学会主流框架就可以了吗(java什么框架最好用)

前言JAVA架构师是不少Java程序员的发展方向之一,也是从应用级程序员成长为研发级程序员所需要经历的重要阶段,所以了解...

2023-11-21 08:37:10查看全文 >>

java框架底层学习交流(java框架学习网站教程交流)

java框架底层学习交流(java框架学习网站教程交流)

1.反射是什么java反射是框架的灵魂,大量框架底层都用到了反射机制,例如Spring....Java反射是在运行状态时...

2023-11-21 08:28:32查看全文 >>

java框架流程该怎么学习(java现在需要学习哪些框架)

java框架流程该怎么学习(java现在需要学习哪些框架)

Java是世界第一编程语言,这已经达成共识,是毋庸置疑的真理。框架是程序员们必学的知识点,而且是十分重要的应用。在Jav...

2023-11-21 08:39:05查看全文 >>

java最基本三大框架学习教程(java三大框架入门学习教程)

java最基本三大框架学习教程(java三大框架入门学习教程)

java是世界第一编程语言,这已经达成共识,是毋庸置疑的真理。框架是程序员们必学的知识点,而且是十分重要的应用,spri...

2023-11-21 08:23:09查看全文 >>

汽车可以直接清洗发动机舱吗(如何正确清洗汽车发动机舱)

汽车可以直接清洗发动机舱吗(如何正确清洗汽车发动机舱)

洗车几乎是每个车主都有的日常操作,那么问题也就来了,如果光是洗外表和内饰的话,所有人都知道该怎么做。但是有一处他们想洗却...

2023-11-21 08:30:30查看全文 >>

java自己写框架是怎样的体验(学习一个java框架要多久)

java自己写框架是怎样的体验(学习一个java框架要多久)

用注解一时爽,一直用一直爽Java后端开发进入spring全家桶时代后,开发一个微服务提供简单的增删改查接口跟玩泥巴似...

2023-11-21 07:54:18查看全文 >>

java三大框架咋学(java怎么才能学框架)

java三大框架咋学(java怎么才能学框架)

Java是世界第一编程语言,这已经达成共识,是毋庸置疑的真理。框架是程序员们必学的知识点,而且是十分重要的应用,Spri...

2023-11-21 08:37:16查看全文 >>

java框架底层技术交流(java10个框架教程交流)

java框架底层技术交流(java10个框架教程交流)

前言在日常的项目开发中,项目可能需要适配不同的数据库类型。而你需要做的仅是修改对应datasource配置即可。不知你是...

2023-11-21 08:42:24查看全文 >>

java框架结构教程交流(java10个框架教程交流)

java框架结构教程交流(java10个框架教程交流)

作者:码农小胖哥1. 前言今天线上出现了个 Bug ,而且比较坑的是涉及到微信相关的东西不能线下调试。传统方式是在代码中...

2023-11-21 08:09:36查看全文 >>

java怎么打造框架(java框架怎样学习)

java怎么打造框架(java框架怎样学习)

Java 程序员方向太多,且不说移动开发、大数据、区块链、人工智能这些,大部分 Java 程序员都是 Java Web/...

2023-11-21 07:56:59查看全文 >>

文档排行