通过书中的学习以及老师课堂的讲述清晰明确地描述了易用性其实就是用户完成期望任务的难度程度以及系统为用户提供的支持种类有关,简单的来说就是通过控制易用性的战术去响应或者完成用户的请求 ,也就是说你得让用户体验一个新系统的时候在每一个过程中能够提示或者有帮助选项去让他完整的体验这些过程,易用也就是好用。易用性战术主要分为下面两种:运行时战术和设计时战术,具体内容这里就不一一赘述。下面将展示热词分析中我认为的易用性的使用。
一、运行时战术
一旦系统执行,就可以通过为用户提供关于系统正在做什么的反馈,以及用于提供发出基于易用性命令的能力来增强易用性。例如,在纠错或更高效的操作中,“取消”、“撤销”、“聚合”和“显示多个视图”均为用户提供支持。
1.维持任务的一个模型。这种情况下,所维持的模型是关于任务的信息。任务模型用于确定上下文,以使该系统了解用户试图做什么,并提供各种协助。例如,知道句子通常以大写字母开头能够使应用程序纠正该位置的小写字母。
2.维持用户的一个模型。维持的模型是关于用户的信息。它确定了用户对该系统的了解,用户在期望的响应时间方面的行为,以及特定于某个用户或某类用户的其他方面。例如,维持用户模型能够使系统以用户可以阅读页面的速度滚动页面。
3.维持系统的一个模型。所维持的模型就是关于系统的信息。它确定了期望的系统行为,以便为用户提供适当的反馈。系统模型反馈预测了诸如完成当前活动所需要时间的项目。
二、设计时战术
- 模型-视图-控制器
- 表示-抽象-控制
- Seeheim
- Arch/Slinky
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。可以将易用性分为如下几个方面:
-
学习系统的特性
如果用户不熟悉某个特定的系统或该系统的某一特定方面,那么,系统可以如何使学习任务变得更容易? -
有效地使用系统
系统如何能提高用户的操作效率? -
将错误的影响降到最低
系统怎样使用户所犯的错误造成的影响最小? -
使系统适应用户的需要
用户(或系统本身)可以如何使用户的任务变得更轻松? -
提高自信和满意度
系统可如何使用户确信采取了正确的行动?
举例说明:
一、运行时战术
1.搜索框可使用联想和记忆
(
function
($) {
'use strict'
;
var
cache = {
data: {},
count: 0,
addData:
function
(key, data) {
if
(!
this
.data[key]) {
this
.data[key] = data;
this
.count++;
}
},
readData:
function
(key) {
return
this
.data[key];
},
deleteDataByKey:
function
(key) {
delete
this
.data[key];
this
.count--;
},
deleteDataByOrder:
function
(num) {
var
count = 0;
for
(
var
p
in
this
.data) {
if
(count >= num) {
break
;
}
count++;
this
.deleteDataByKey(p);
}
}
};
function
Search($elem, options) {
this
.$elem = $elem;
this
.options = options;
this
.$form =
this
.$elem.find(
'.search-form'
);
this
.$input =
this
.$elem.find(
'.search-inputbox'
);
this
.$layer =
this
.$elem.find(
'.search-layer'
);
this
.loaded =
false
;
this
.$elem.on(
'click'
,
'.search-btn'
, $.proxy(
this
.submit,
this
));
if
(
this
.options.autocomplete) {
this
.autocomplete();
}
}
Search.DEFAULTS = {
autocomplete:
false
,
url:
'https://suggest.taobao.com/sug?code=utf-8&_ksTS=1484204931352_18291&callback=jsonp18292&k=1&area=c2c&bucketid=6&q='
,
css3:
false
,
js:
false
,
animation:
'fade'
,
getDataInterval: 200
};
Search.prototype.submit =
function
() {
if
(
this
.getInputVal() ===
''
) {
return
false
;
}
this
.$form.submit();
};
Search.prototype.autocomplete =
function
() {
var
timer =
null
,
self =
this
;
this
.$input
.on(
'input'
,
function
() {
if
(self.options.getDataInterval) {
clearTimeout(timer);
timer = setTimeout(
function
() {
self.getData();
}, self.options.getDataInterval);
}
else
{
self.getData();
}
})
.on(
'focus'
, $.proxy(
this
.showLayer,
this
))
.on(
'click'
,
function
() {
return
false
;
});
this
.$layer.showHide(
this
.options);
$(document).on(
'click'
, $.proxy(
this
.hideLayer,
this
));
};
2.登录界面忘记密码功能
/** * 找回 密码 第二步 * * @return String * @author lifq * @date 2015-3-17 上午10:24:09 */ public String toSetPayrollPwd2(){ String vc = context.getParameter("vc"); if(null!=vc){ try { //此处直接 des解码 String decode = DesUtil.decrypt(vc); List list = EmailUtil.parseContent(decode, ";"); if(null!=list && list.size()>0){ String personname = (String)list.get(0); String email = (String)list.get(1); long entimes = Long.parseLong((String)list.get(2)); long curtime = System.currentTimeMillis(); if(entimes<=curtime){ context.setRequestAttribute("errorMsg", "当前链接已失效,请重新 后去重置密码链接!"); }else{ context.setRequestAttribute("personname", personname); context.setRequestAttribute("email", email); context.setRequestAttribute("vc", UrlUtil.getURLEncoderString(vc)); } } } catch (Exception e) { e.printStackTrace(); context.setRequestAttribute("errorMsg", "链接无效!"); } } return RETURN_SUCCESS; }
二、设计时战术
这一部分知道的不是太多,从网上查到学习了解了一部分
1.组件对外接口
FormBody formBody = new FormBody.Builder() .add("pay_fee", String.valueOf(product.getProductPrice())) .add("product_name", String.valueOf(product.getProductName())) .add("access_token", "") .build(); Request request = new Request.Builder() .post(formBody) .url(createOrderURL) .build(); OkHttpClient okHttpClient = new OkHttpClient(); Call call = okHttpClient.newCall(request); call.enqueue(null);