• 轻量级MVC标准


    看到标题,估计有人就开始想吐了,没关系,你可以先吐完再看,现在MVC框架多如牛毛,没必要再重复发明轮子了,要声明的是,这里不是想要发明轮子,也没那个闲工夫去发明轮子,而是看到这么多MVC框架模样都差不多,想统一接口,减少迁移成本,Java世界里,最喜欢的就是定标准,然后就是一大堆的实现,估且这里也当一个标准来搞,纯属娱乐的标准。 

    注:下面的定义都是狭义的,用于限定本次要解决的问题域,你也可以定义你自己标准,这不是啥业界标准。 

    (一) 轻量级MVC定义: 
    1. 框架对应用无侵入,不依赖任何接口类 
    2. 框架零配置,零注解 
    3. 简单易用,易于理解,暂且不搞RESTful,免得复杂 

    (二) 轻量级MVC接口: 
    1. Controller采用setter注入请求参数,并支持层级注入,如:book.title. 
    2. Controller采用getter供给数据给View,在View中可直接取到相应属性值,如:${property}. 
    3. Controller采用任意非setter和getter函数处理请求。 
    4. Controller采用函数返回值控制跳转,只允许跳转到另一Controller,不允许一个Controller对应两个View. 
    5. Controller对Model的依赖采用setter自动装配,包括Model之间的依赖. 
    6. Session参数,如:loginUserId,也通过setter注入到Controller,如果有请求参数注入了loginUserId,也会被Session参数给覆盖. 
    7. View与Controller一对一,通过名称映射,并支持各种View模板类型扩展,比如:JSP, Velocity, FreeMarker, CommonTemplate等. 
    8. 没有Controller时,View也能执行,相当于隐式Controller。 
    9. 框架应提供COC接口,基于规则约定某个包名是model,某个包名是controller,某个目录是view,比如:com.company.module.controller,自动发现module,并以单例模式加载model,以原型模式加载controller。 
    总而言之,接口除了setter和getter,以及自动映射规则,什么都没有. 

    (三) 轻量级MVC访问: 
    http://主机名[:端口][/应用名]/模块名/控制器名/函数名.html[?参数名=参数值] 
    注:方括号代表可省 

    (四) 轻量级MVC实现: 
    符合以上接口的实现均可。 

    (五) 轻量级MVC优势: 
    业务逻辑不依赖任何框架,可以适配到任意框架而不影响业务代码,当旧的框架被淘汰,无人维护时,可以以最快的方式迁移到新的更稳定的框架. 

    理想是美好的,现实是残酷的,上面纯属个人想法,现实中困难多了,怀着美好愿景总是好的。

  • 相关阅读:
    python 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
    python 删除文件或文件夹
    Computer Science Theory for the Information Age-1: 高维空间中的球体
    Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).
    王道论坛研究生机试练习赛(二)
    Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).
    PAT 1021
    Jordan Lecture Note-10: Kernel Principal Components Analysis (KPCA).
    PAT 1020
    PAT 1019
  • 原文地址:https://www.cnblogs.com/rrsina/p/3926404.html
Copyright © 2020-2023  润新知