1.1 模板方法 : 传统模板
package demo.spring.boot.demospringboot;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
abstract class Abstract<T> {
private Logger logger = LoggerFactory.getLogger(getClass());
public T control(String sh) { //定义算法顺序
String cmd = sh;
logger.info("sh is :{}", cmd);
Runtime run = Runtime.getRuntime();
InputStream in = null;
T result = null;
try {
Process process = run.exec(cmd);
in = process.getInputStream();
result = deal(in);
in.close();
process.destroy();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
protected abstract T deal(InputStream inputStream); //定义后期的实现接口
}
public class Client extends Abstract<List<String>> {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
protected List<String> deal(InputStream inputStream) {
Reader reader = new InputStreamReader(inputStream);
LineNumberReader lineNumberReader
= new LineNumberReader(reader);
List<String> list;
list = lineNumberReader.lines().collect(Collectors.toList());
try {
lineNumberReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
@org.junit.Test
public void test() {
Client client = new Client();
List<String> list = client.control("ls");
logger.info("result:{}", list);
}
}