zoukankan      html  css  js  c++  java
  • 框架设计注意事项——生命周期

    今天在阅读Servlet3.0.1规范时,在讲述Servlet的生命周期的章节发现一个框架设计时需要注意的点,在这里整理一下。

    我认为,框架和库的不同点在于“控制流的走向”。
    当我们使用一个库,控制流从我们的代码流向库代码,然后从库代码再流回我们的代码。当我们使用一个框架时,控制流同框架开始,流向我们的代码,最终又回到了框架的代码。这意味着当我们使用一个框架时,我们完成的组件的生命周期是由框架来管理的。在Servlet的场景下,Servlet是框架,我们实现的Servlet是组件。所以Servlet的生命周期由框架管控。Servlet的总共由三个生命周期的方法:

    init(ServletConfig):void;
    Service(ServletRequest, ServletResponse):void;
    destroy():void;
    

    Servlet规范中表述时提到,static initialization methods 不同于init(ServletConfig):void方法。这里的原因很好理解:当类被加载时静态初始化方法被调用。这是可能运行时环境还没有准备好,所以开发者应该避免在静态初始化方法中进行一些依赖容器的操作。
    这里启发了我,作为框架的使用者,如果框架没有为我们初始化生命周期的钩子,我们可以通过静态初始化方法来完成这个操作。但是需要注意,这时环境可能不完善。
    作为框架的作者,我们应该设计好组件的生命周期管理工作,同时在文档中写清楚静态初始化方法这种操作带来的问题。

  • 相关阅读:
    “正则表达式”实践日志
    一种存储数据的方法
    计划
    位运算
    ACM
    ACM-括号匹配问题
    [转]昆明长水机场安防系统应用案例分析
    Request.ServerVariables详细说明
    大数据平台的秘密
    【转】MongoDB资料汇总专题
  • 原文地址:https://www.cnblogs.com/x2zh/p/10623929.html
Copyright © 2011-2022 走看看