重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
参考内容: 去除多余的if else, 5种方式你知道几种, 优化if else的几种方式
// 根据员工类型,输出不同的工资
public void getSalary(String person){
if(StringUtils.equals("BOSS", person)){
System.out.println("Boss salary 10000000");
}else if(StringUtils.equals("MANAGER", person)){
System.out.println("Manager salary 10000");
}else if(StringUtils.equals("STAFF", person)){
System.out.println("Staff salary 100");
}
}
新建抽象类,有获取工资的抽象方法
创新互联为企业级客户提高一站式互联网+设计服务,主要包括成都做网站、成都网站制作、app开发定制、成都小程序开发、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。 public abstract class Salary {
abstract void getSalary();
}
三个不同的类 实现该方法
public class Boss extends Salary {
@Override
public void getSalary() {
System.out.println("Boss salary 10000000");
}
}
public class Manager extends Salary {
@Override
public void getSalary() {
System.out.println("Manager salary 10000");
}
}
public class Staff extends Salary {
@Override
public void getSalary() {
System.out.println("Staff salary 100");
}
}
静态工厂方式,提供获取工资方法调用
public class TestSalary {
static Map data = new HashMap<>();
static {
data.put("BOSS", new Boss());
data.put("MANAGER", new Manager());
data.put("STAFF", new Staff());
}
public static void main(String[] args) {
getSalary("MANAGER");
}
static void getSalary(String person){
data.get(person).getSalary();
}
}
枚举类 内有抽象方法以及不同枚举值的实现
public enum Salary {
BOSS{
@Override
void getSalary() {
System.out.println("Boss salary 10000000");
}
},
MANAGER{
@Override
void getSalary() {
System.out.println("Manager salary 10000");
}
},
STAFF{
@Override
void getSalary() {
System.out.println("Staff salary 100");
}
};
abstract void getSalary();
}
直接调用该枚举的抽象方法即可
public class TestSalary {
public static void main(String[] args) {
getSalary(Salary.valueOf("BOSS"));
}
public static void getSalary(Salary salary){
salary.getSalary();
}
}
新建抽象类
public abstract class Salary {
abstract void getSalary();
}
三个不同实现,实现该方法
@Service("BOSS")
public class Boss extends Salary {
@Override
public void getSalary() {
System.out.println("Boss salary 10000000");
}
}
@Service("MANAGER")
public class Manager extends Salary {
@Override
public void getSalary() {
System.out.println("Manager salary 10000");
}
}
@Service("STAFF")
public class Staff extends Salary {
@Override
public void getSalary() {
System.out.println("Staff salary 100");
}
}
上下文切换类
@Component("salaryContext")
public class SalaryContext {
@Autowired
private final Map salaryMap = new ConcurrentHashMap<>(3);
public void getSalary(String serviceName) {
salaryMap.get(serviceName).getSalary();
}
}
测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class ApplicationTests {
@Resource
private SalaryContext salaryContext;
@Test
public void contextLoads() {
}
@Test
public void getSalary() {
salaryContext.getSalary("BOSS");
}
}
注意:调试中,出现bean注入失败的原因,可以从以下顺序找问题(参考内容1, 参考内容2):