后端技术面试38讲
李智慧
同程艺龙交通首席架构师,前Intel&阿里架构师,《大型网站技术架构》作者
立即订阅
3795 人已学习
课程目录
已更新 21 讲 / 共 38 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 掌握软件开发技术的第一性原理
免费
软件的基础原理 (8讲)
01丨程序运行原理:程序是如何运行又是如何崩溃的?
02丨数据结构原理:Hash表的时间复杂度为什么是O(1)?
03丨Java虚拟机原理:JVM为什么被称为机器(machine)?
04丨网络编程原理:一个字符的互联网之旅
05丨文件系统原理:如何用1分钟遍历一个100TB的文件?
06丨数据库原理:为什么PrepareStatement性能更好更安全?
07丨编程语言原理:面向对象编程是编程的终极形态吗?
答疑丨Java Web程序的运行时环境到底是怎样的?
软件的设计原理 (11讲)
08丨软件设计的方法论:软件为什么要建模?
09丨软件设计实践:如何使用UML完成一个设计文档?
10 | 软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?
11丨软件设计的开闭原则:如何不修改代码却能实现需求变更?
12 | 软件设计的依赖倒置原则:如何不依赖代码却可以复用它的功能?
13丨软件设计的里氏替换原则:正方形可以继承长方形吗?
14 | 软件设计的单一职责原则:为什么说一个类文件打开最好不要超过一屏?
15丨软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法?
16 | 设计模式基础:不会灵活应用设计模式,你就没有掌握面向对象编程
17 | 设计模式应用:编程框架中的设计模式
18 | 反应式编程框架设计:如何使程序调用不阻塞等待,立即响应?
不定期加餐 (1讲)
加餐 | 软件设计文档示例模板
后端技术面试38讲
登录|注册

17 | 设计模式应用:编程框架中的设计模式

李智慧 2019-12-30
在绝大多数情况下,我们开发应用程序的时候,并不是从头开发的。比如,我们用 Java 开发一个 Web 应用,并不需要自己写代码监听 HTTP 80 端口;不需要处理网络传输的二进制 HTTP 数据包(参考第 4 篇网络编程原理);不需要亲自为每个用户请求分配一个处理线程(参考01 篇操作系统原理),而是直接编写一个 Servlet,得到一个 HttpRequest 对象进行处理就可以了。我们甚至不需要从这个 HttpRequest 对象中获取请求参数,通过 Controller 就可以直接得到一个由请求参数构造的对象。
我们写代码的时候,只需要关注自己的业务逻辑就可以了。那些通用的功能,比如监听 HTTP 端口,从 HTTP 请求中构造参数对象,是由一些通用的框架来完成的,比如 Tomcat 或者 Spring 这些。

什么是框架

框架是对某一类架构方案可复用的设计与实现。所有的 Web 应用都需要监听 HTTP 端口,也需要处理请求参数,这些功能不应该在每个 Web 应用中都被重复开发,而是应该以通用组件的形式被复用。
但并不是所有可被复用的组件都被称作框架,框架通常规定了一个软件的主体结构,可以支撑起软件的整体或者局部的架构形式。比如说,Tomcat 完成了 Web 应用请求响应的主体流程,我们只需要开发 Servlet,完成请求处理逻辑,构造响应对象就可以了,所以 Tomcat 是一个框架。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《后端技术面试38讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(3)

  • 唐二毛
    我有个疑惑,面试给出这样简单的答案,恐怕是过不了关吧? 希望老师爆点真正的干货出来!
    2019-12-30
    3
    4
  • Zend
    什么是框架
    框架式对某一类架构方案可复用设计与实现
    Tomcat是框架,它完成了Web应用请求响应的主体流程。
    框架应用满足依赖倒置原则

    Web容器中的设计模式
    1.策略模式
    策略接口:J2EE规范定义的Servlet接口
    策略实现:我们看开发的Servlet具体类
    Client程序:Tomcat
    2.模板方法模式
    2.1 父类中抽象方法定义计算的骨架和过程,抽象方法的实现留在子类。
    2.2 HttpServlet extends GenericServlet implements Servlert
    2.3 HttpServlet中的service方法 针对不同的HTTP请求类型调用相应的方法,
    service方法就是一个模板方法。

    JUnit中的设计模式
    1.模板方法模式 测试用例的方法执行顺序固定在模板方法TestCase.runBare
    2.测试套件TestSuite 采用组合模式
    2.1 TestSuite.addTest(TestCase test)
    2.1 TestSuite.addTest(TestSuite test)
    2019-12-30
    2
  • Keep-Moving
    不写代码的架构师不是好司机
    2019-12-30
收起评论
3
返回
顶部