参考RedisTemplate实现简单模板模式
package cn.****.spider.core.utils;
import lombok.Getter;
import lombok.Setter;
/**
* 功能:模板模式
* 作者:刘**
* 联系:********@gmail.com
* 时间:17-11-17 上午11:13
* 更新:
* 备注:
*/
public class RedisTemplate {
@Getter @Setter
private String before;
@Getter @Setter
private String after;
public RedisTemplate() {
this.before = "前置处理";
this.after = "后置处理";
}
public <T> T exec(Handle<T> handle){
T value = null;
System.out.println(before);
try{
value = handle.handle(new Redis() {
@Override
public void set(String key, String value) {
System.out.println(String.format("set key: %s, value: %s", key, value));
}
@Override
public String get(String key) {
System.out.println(String.format("get key: %s", key));
return "value";
}
});
System.out.println("handle result : " + value);
}catch (RuntimeException e){
e.printStackTrace();
System.out.println("exception");
}
System.out.println(after);
return value;
}
public interface Handle<T> {
T handle(Redis redis);
}
public interface Redis{
void set(String key, String value);
String get(String key);
}
public static void main(String[] args) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.exec(new Handle<String>() {
@Override
public String handle(Redis redis) {
return redis.get("username");
}
});
}
}