在使用稳定抽象原理(SAP)阅读此维基之后,我想知道是否有人知道取决于抽象而不是混凝土的任何缺点(我认为,这超过了优势).
SAP声明包越稳定,它应该越抽象.这意味着如果包装不太稳定(更有可能改变),那么它应该更具体.我真的不明白为什么会出现这种情况.当然,在所有情况下,无论稳定性如何,我们都应该依赖于抽象并隐藏具体实现?
我知道已经有很多问题,但我似乎还没有找到明确的答案.我要做的是让用户在登录2周后或者直到他们退出时才会被记住.以下是我认为应该发生的事情,我想知道是否有更多经验的人可以告诉我,我是对还是错.
用户首次登录.对服务器的RPC调用返回一个"UserInfo"对象,其中包含一个新的sessionID.服务器上的Aka会发生并user返回:
user.setSessionId(getThreadLocalRequest().getSession().getId());
现在user返回后,我们必须创建Cookie来存储客户端数据.我正确地说我们需要一个Cookie来识别当前用户而另一个用于sessionID:
final long DURATION = 1000 * 60 * 60 * 24 * 14; //duration remembering login - 2 weeks
Date expires = new Date(System.currentTimeMillis() + DURATION);
String sessionID = user.getSessionId();
String username = user.getUsername();
Cookies.setCookie("sessionID", sessionID, expires, null, "/", false);
Cookies.setCookie("username", username, expires, null, "/", false);
Run Code Online (Sandbox Code Playgroud)
现在,当用户稍后返回应用程序时,我们检查cookie并且(如果它们存在且由于某些原因(例如显式从用户注销)未被删除)使用它们的值来通过RPC检查会话有效性服务器:
String sessionID = Cookies.getCookie("sessionID");
String username = Cookies.getCookie("username");
if ( sessionID != null && username != null){
AsyncCallback<UserInfo> callBack = new AsyncCallback<UserInfo>(){
@Override
public void …Run Code Online (Sandbox Code Playgroud) 以下内容有什么区别:
import module namespace fs = "http://expath.org/ns/file";
declare namespace an = "http://zorba.io/annotations";
Run Code Online (Sandbox Code Playgroud)
“导入模块名称空间”与“声明名称空间”相比如何?
而且,使用命名空间声明之间的区别是
declare namespace an = "http://zorba.io/annotations";
Run Code Online (Sandbox Code Playgroud)
和
module namespace an = "http://zorba.io/annotations";
Run Code Online (Sandbox Code Playgroud)