zoukankan      html  css  js  c++  java
  • 质量属性之易用性战术补充

      易用性战术补充内容为易用性战术使用方法——分离用户接口。

      分离用户接口是指只给用户留下有限的、按规则调用的用户可以看到的内容,其余的都会隐藏在后台中,这样做的好处是不仅满足了前后端高内聚低耦合的开发原则,还使得代码的开发成本降低、维护效率提高。比较常见的分离模式是前端利用ajax向后台请求数据,后台查询数据并打包成json格式返回到前台,由前台解析成可视化数据。

     1 $.ajax({
     2             type : "POST", //请求方式  
     3             url : "${pageContext.request.contextPath}/Querymain", //请求路径 
     4             traditional : true,//据说可以阻止jQuery对数组的深度序列化
     5             cache : false,
     6             data : {//传参  
     7                 "Id" : id
     8             },
     9             
    10             dataType : 'json', //返回值类型  
    11             success : function(data) {
    12                 /*  alert(json[0].username+" " + json[0].password);    //弹出返回过来的List对象  
    13                  alert(json[1].username+" " + json[1].password);    //弹出返回过来的List对象 */
    14                 var jsonArray = data;
    15                 for (var i = 0; i < data.length; i++) {
    16                     alert(data[i].getPingtaimingcheng + " "
    17                             + data[i].getDiaochaniandu);
    18                     s = "<tr><td>" + data[i].pingtaimingcheng + "</td><td>"
    19                             + jsonArray[i].diaochaniandu + "</td><td>"
    20                             + jsonArray[i].tianbiaoren + "</td><td>"
    21                             + jsonArray[i].tianbaoshijian + "</td><td>"
    22                             + jsonArray[i].dangqianzhuangtai + "</td><td>"
    23                             + jsonArray[i].shenhejindu + "</td></tr>";
    24                     $("#tab").append(s);
    25                 }
    26             },
    27             error : function(errorInfo) {//打印错误信息
    28                 console.log(errorInfo);
    29             }
    30         });

      可以看到上述的代码,使用ajax向后台请求数据,然后将发送回来的json数据重新“解压”成可以读懂的方式。

      除此之外,更加常见的分离用户接口的例子是大名鼎鼎的MVC架构,即Model—View-Controller模型-视图-控制器模式,它的核心思想就是典型的“职责分离”,Model数据层负责数据库数据的增删改查,View视图层负责做html页面的展示Controller逻辑层负责书写业务逻辑。事实上,Javabean+servlet+jsp同样是一种实现分离用户接口的方法。

      Javabean负责定义私有属性,使得用户不能直接调用属性,同时定义属性方法,使得开发者可以任意组装想要的属性接口方便调用。一般的Javabean结构如下:

    public class majorbean {
        
        private int id;//���
        private String reseachdirect;//�����
        private String reseachcontent;//�����
        private String reseachname;//���������
        private String qulification;//�о��������ʵȼ�
        private String qulificationapartment;//�������ʲ���
        private String basename;//����������(����)����
        private String belongunit;//���ڵ�λ
        private String serviceproject;//������Ŀ
        private String servicecontent;//��������
        
        public majorbean() {
            super();
        }
        
        public majorbean(String reseachdirect, String reseachcontent) {
            super();
            this.reseachdirect = reseachdirect;
            this.reseachcontent = reseachcontent;
        }
        
        public majorbean(String reseachname, String qulification, String qulificationapartment) {
            super();
            this.reseachname = reseachname;
            this.qulification = qulification;
            this.qulificationapartment = qulificationapartment;
        }
        public majorbean(String reseachdirect, String reseachcontent, String reseachname, String qulification,
                String qulificationapartment, String basename, String belongunit, String serviceproject,
                String servicecontent) {
            super();
            this.reseachdirect = reseachdirect;
            this.reseachcontent = reseachcontent;
            this.reseachname = reseachname;
            this.qulification = qulification;
            this.qulificationapartment = qulificationapartment;
            this.basename = basename;
            this.belongunit = belongunit;
            this.serviceproject = serviceproject;
            this.servicecontent = servicecontent;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getReseachdirect() {
            return reseachdirect;
        }
        public void setReseachdirect(String reseachdirect) {
            this.reseachdirect = reseachdirect;
        }
        public String getReseachcontent() {
            return reseachcontent;
        }
        public void setReseachcontent(String reseachcontent) {
            this.reseachcontent = reseachcontent;
        }
        public String getReseachname() {
            return reseachname;
        }
        public void setReseachname(String reseachname) {
            this.reseachname = reseachname;
        }
        public String getQulification() {
            return qulification;
        }
        public void setQulification(String qulification) {
            this.qulification = qulification;
        }
        public String getQulificationapartment() {
            return qulificationapartment;
        }
        public void setQulificationapartment(String qulificationapartment) {
            this.qulificationapartment = qulificationapartment;
        }
        public String getBasename() {
            return basename;
        }
        public void setBasename(String basename) {
            this.basename = basename;
        }
        public String getBelongunit() {
            return belongunit;
        }
        public void setBelongunit(String belongunit) {
            this.belongunit = belongunit;
        }
        public String getServiceproject() {
            return serviceproject;
        }
        public void setServiceproject(String serviceproject) {
            this.serviceproject = serviceproject;
        }
        public String getServicecontent() {
            return servicecontent;
        }
        public void setServicecontent(String servicecontent) {
            this.servicecontent = servicecontent;
        }
        
    
    }

      可以看到的是,属性是private,不允许随意调用,方法都是public,可以任意调用。这样就为开发者留出可使用接口操作。然后在servlet中,可以创建该Javabean的实例,然后进行组装、使用。

    majorbean major = new majorbean();
    major.setReseachname(reseachname);

      最后,由servlet发送到客户端即jsp中(或者像上面说的,ajax请求数据),由jsp负责解析数据并展示给用户。Javabean、servlet和jsp就构成了一个分离用户接口的模型。用户只能看到在jsp界面得到的内容,却不能看到开发者是如何查询到这些内容的,同时也不会看到相关代码,避免信息泄露,也相应减轻了开发者维护代码的难度。

      

  • 相关阅读:
    CIA泄露资料分析(黑客工具&技术)—Windows篇
    包学会之浅入浅出Vue.js:结业篇
    包学会之浅入浅出Vue.js:升学篇
    包学会之浅入浅出Vue.js:开学篇
    Manacher算法详解
    CSP-S 2019 游记
    洛谷 P3373 【模板】线段树 2
    AHOI 2009 维护序列
    洛谷 P4017 最大食物链计数
    洛谷 SP14932 LCA
  • 原文地址:https://www.cnblogs.com/YXSZ/p/12454134.html
Copyright © 2011-2022 走看看