package com.bvlan.test.cases;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 模式乱用
*
* @author tgy
* @version [版本号, 20190319]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public abstract class AbstractTest<Component> {
private static final List<String> APP_NAME_LST = new ArrayList<>();
public void put(String v) {
APP_NAME_LST.add(v);
}
public static void execute(String appName) {
if (!APP_NAME_LST.contains(appName)) {
return;
}
}
public abstract String getName();
public abstract void start();
public abstract void stop();
}
class AbSon1 extends AbstractTest<Con1> {
public static final String APP_NAME = "AAAA";
AbSon1() {
super.put(APP_NAME);
}
@Override
public String getName() {
return APP_NAME;
}
@Override
public void start() {
Con1 con = new Con1();
con.setId(1);
con.setName(APP_NAME);
con.execute("天下皆白");
System.out.println("AbSon1 start");
}
@Override
public void stop() {
System.out.println("AbSon1 stop");
}
}
@Data
class Con1 extends Component {
String v1;
public void execute(String v1) {
record();
System.out.println("v1:" + v1);
}
}
@Data
class Con2 extends Component {
String v2;
public void httpReq(String v2) {
record();
System.out.println("v2:" + v2);
}
}
class AbSon2 extends AbstractTest<Con2> {
public static final String APP_NAME = "BBBB";
AbSon2() {
super.put(APP_NAME);
}
@Override
public String getName() {
return APP_NAME;
}
@Override
public void start() {
Con2 con = new Con2();
con.setId(2);
con.setName(APP_NAME);
con.httpReq("唯我独黑");
System.out.println("AbSon2 start");
}
@Override
public void stop() {
System.out.println("AbSon2 stop");
}
}
@Data
class Component {
Integer id;
String name;
public String record() {
StackTraceElement[] stacks = Thread.currentThread().getStackTrace();
String methodName = stacks[3].getMethodName();
//做其他的事情
System.out.println("[" + methodName + "]记录留存:record info id:[" + id + "],name:[" + name + "]");
return "SUCCESS";
}
}
class testAb {
public static void main(String[] args) {
//这里应当是spring自动注入实例此处new出来
AbstractTest ab1 = new AbSon1();
AbstractTest ab2 = new AbSon2();
ab1.start();
ab2.start();
ab1.stop();
ab2.stop();
}
}
执行结果如下