參考內(nèi)容: 去除多余的if else, 5種方式你知道幾種, 優(yōu)化if else的幾種方式
// 根據(jù)員工類型,輸出不同的工資
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");
}
}
新建抽象類,有獲取工資的抽象方法
創(chuàng)新互聯(lián)為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括成都做網(wǎng)站、成都網(wǎng)站制作、app開發(fā)定制、成都小程序開發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來(lái)大量新的創(chuàng)意。 public abstract class Salary {
abstract void getSalary();
}
三個(gè)不同的類 實(shí)現(xiàn)該方法
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");
}
}
靜態(tài)工廠方式,提供獲取工資方法調(diào)用
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();
}
}
枚舉類 內(nèi)有抽象方法以及不同枚舉值的實(shí)現(xiàn)
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();
}
直接調(diào)用該枚舉的抽象方法即可
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();
}
三個(gè)不同實(shí)現(xiàn),實(shí)現(xiàn)該方法
@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();
}
}
測(cè)試類
@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");
}
}
注意:調(diào)試中,出現(xiàn)bean注入失敗的原因,可以從以下順序找問(wèn)題(參考內(nèi)容1, 參考內(nèi)容2):