在很多需要时候,需要对功能进行扩展,使用if/else写起来虽然简单方便,但是当需要处理的东西变多时,就会让代码看起来臃肿不够优雅。此处,将通过策略模式的方式,实现直接将对应的值去执行相关的功能。
代码如下:
先写一个抽象类,抽象出共有的方法。
public interface Person {
public static final String PREFIX = "person";
public static final String COMMON_PERSON = "common";
public static final String SUPER_PERSON = "super";
public static final String GOD_PERSON = "god";
void sing();
void jump();
void rap();
void basketball();
}
实现对应功能的类去继承这个抽象类
CommonPerson .class
@Component(Person.PREFIX+Person.COMMON_PERSON)
public class CommonPerson implements Person{
@Override
public void sing() {
System.out.println("just common sing level!!!");
}
@Override
public void jump() {
System.out.println("just common jump level!!!");
}
@Override
public void rap() {
System.out.println("just common rap level!!!");
}
@Override
public void basketball() {
System.out.println("just common basketball level!!!");
}
}
GodPerson.class
@Component(Person.PREFIX+Person.GOD_PERSON)
public class GodPerson implements Person{
@Override
public void sing() {
System.out.println("god like sing level!!!");
}
@Override
public void jump() {
System.out.println("god like jump level!!!");
}
@Override
public void rap() {
System.out.println("god like rap level!!!");
}
@Override
public void basketball() {
System.out.println("god like basketball level!!!");
}
}
SuperPerson.class
@Component(Person.PREFIX+Person.SUPER_PERSON)
public class SuperPerson implements Person{
@Override
public void sing() {
System.out.println("super sing level!!!");
}
@Override
public void jump() {
System.out.println("super jump level!!!");
}
@Override
public void rap() {
System.out.println("super rap level!!!");
}
@Override
public void basketball() {
System.out.println("super basketball level!!!");
}
}
在使用时,可以通过Map注入的方式即可,如下:
@Service
public class PersonService {
//Map中自动注入了上面三个bean的实例信息
@Resource
Map<String,Person> personMap;
public void output(String personLevel){
Person person = personMap.get(Person.PREFIX+personLevel);
person.sing();
person.jump();
person.rap();
person.basketball();
}
}
根据业务类型,实现不同的逻辑代码,即对if/else进行了优化。