效果1
优化前
@Test
public void noDeSign() {
String name = "张三";
if ("张三".equals(name)) {
System.out.println("张三AAA");
} else if ("李四".equals(name)) {
System.out.println("李四AAA");
} else if ("王五".equals(name)) {
System.out.println("王五AAA");
}
}
优化后
@Test
public void deSign(){
String nmae = "王五";
Handler handler = Factory.getHandler(nmae);
handler.AAA(nmae);
}
实现1
1.新建接口
public interface Handler extends InitializingBean {
void AAA(String name);
}
2.创建实现类
@Component
public class ZhangSanHandler implements Handler {
@Override
public void AAA(String name) {
System.out.println("张三AAA");
}
@Override
public void afterPropertiesSet() throws Exception {
Factory.setHandler("张三", this);
}
}
@Component
public class LiSiHandler implements Handler {
@Override
public void AAA(String name) {
System.out.println("李四AAA");
}
@Override
public void afterPropertiesSet() throws Exception {
Factory.setHandler("李四", this);
}
}
@Component
public class WangWuHandler implements Handler {
@Override
public void AAA(String name) {
System.out.println("王五AAA");
}
@Override
public void afterPropertiesSet() throws Exception {
Factory.setHandler("王五", this);
}
}
3.新建工厂
public class Factory {
private static Map<String, Handler> map = new HashMap<>();
public static Handler getHandler(String name){
return map.get(name);
}
public static void setHandler(String name, Handler handler){
if (StringUtils.isEmpty(name) || handler == null){
return;
}
map.put(name, handler);
}
}
效果2
优化前
@Test
public void noDeSign2() {
String name = "张三";
if ("张三".equals(name)) {
String aaa = "张三BBB";
System.out.println(aaa);
} else if ("李四".equals(name)) {
System.out.println("李四AAA");
} else if ("王五".equals(name)) {
System.out.println("王五AAA");
}
}
优化后
@Test
public void deSign2(){
String nmae = "张三";
AbstractHandler handler = Factory2.getHandler(nmae);
String bbb = handler.BBB(nmae);
System.out.println(bbb);
}
@Test
public void deSign2(){
String nmae = "李四";
AbstractHandler handler = Factory2.getHandler(nmae);
handler.AAA(nmae);
}
实现2
1.新建抽象类
public abstract class AbstractHandler implements InitializingBean {
public void AAA(String name){
throw new UnsupportedOperationException();
}
public String BBB(String name){
throw new UnsupportedOperationException();
}
}
2.创建实现类
@Component
public class ZhangSanHandler2 extends AbstractHandler {
@Override
public String BBB(String name) {
return "张三BBB";
}
@Override
public void afterPropertiesSet() throws Exception {
Factory2.setHandler("张三", this);
}
}
@Component
public class LiSiHandler2 extends AbstractHandler {
@Override
public void AAA(String name) {
System.out.println("李四AAA");
}
@Override
public void afterPropertiesSet() throws Exception {
Factory2.setHandler("李四", this);
}
}
@Component
public class WangWuHandler2 extends AbstractHandler {
@Override
public void AAA(String name) {
System.out.println("王五AAA");
}
@Override
public void afterPropertiesSet() throws Exception {
Factory2.setHandler("王五", this);
}
}
3.新建工厂
public class Factory2 {
private static Map<String, AbstractHandler> map = new HashMap<>();
public static AbstractHandler getHandler(String name){
return map.get(name);
}
public static void setHandler(String name, AbstractHandler handler){
if (StringUtils.isEmpty(name) || handler == null){
return;
}
map.put(name, handler);
}
}