返回介绍

想写框架的看过来

发布于 2025-01-22 00:38:50 字数 1589 浏览 0 评论 0 收藏 0

天才程序员去创造工具,大众程序员去使用工具, 我想大部分人都处于“使用” 这个层次, 我就是其中之一。

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

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

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

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

你想一想,单独的 Struts, Spring ,Hibernate 能运行吗? 肯定不行吧。

框架是个半成品(但不是残次品), 我们要想用起来,非得自己填上代码不可。

这就有点难搞了,那些大牛们写框架的时候得考虑用户怎么配合才行, 所以得 定义好边界, 哪些是框架的任务,哪些是程序员应该做的扩展

我们想修改框架的东西,门儿都没有,对修改完全封闭。 但是框架又提供了一些地方让程序员扩展, 这就是著名的面向对象设计的原则之一: Open-Close 原则 模板方法 想达成这个目标,最容易的方式就是“ 继承 ”, 在 Java 世界常用的就是 抽象类

抽象类有这样的好处: 1. 没法实例化去执行(符合框架半成品的特点) 2. 可以被继承, 抽象方法需要使用者去实现。 3. 可以在抽象类中写代码,写框架相关的代码, 还可以调用抽象方法。

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

假设你要写一个 MVC 的框架, 你希望定义一个抽象类 AbstractAction,把一些框架应该做的事封装起来,比如抽取 HttpRequest 的参数,形成一个 Map 以便传递给具体的 Action 使用,这些操作和步骤是子类不能修改的-- Close 作为框架开发者, 你需要给使用者提供上图中用到的几个注解 @Action 用来表明这是一个 Action 类 @RequestMapping 表明如果用户通过浏览器访问/login , 那这个 excute 方法就会被执行。

还要加上这么一个 约定 : 如果用户访问的是/login?username=liuxin&password=123456 的话 那么 execute 方法的 username 和 password 两个参数将会绑定到值“liuxin" 和 "123456"

有了这些注解和约定,你的框架就能找到程序员写的 Action 类,并且直到如何调用方法, 如何传递参数了。

(注:这其实就是 spring mvc 背后的思想)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文