真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

優(yōu)雅替代ifelse判斷邏輯-創(chuàng)新互聯(lián)

參考內(nèi)容: 去除多余的if else, 5種方式你知道幾種, 優(yōu)化if else的幾種方式優(yōu)雅替代ifelse判斷邏輯

最初的邏輯

// 根據(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");
    }
}

工廠模式解決方案

  1. 新建抽象類,有獲取工資的抽象方法

    創(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();
     }
  2. 三個(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");
         }
     }
  3. 靜態(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();
         }
     }

枚舉解決方案

  1. 枚舉類 內(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();
     }
  2. 直接調(diào)用該枚舉的抽象方法即可

     public class TestSalary {
    
         public static void main(String[] args) {
             getSalary(Salary.valueOf("BOSS"));
         }
    
         public static void getSalary(Salary salary){
             salary.getSalary();
         }
     }

springboot 策略模式注解方式

  1. 新建抽象類

     public abstract class Salary {
       abstract void getSalary();
     }
  2. 三個(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");
         }
     }
  3. 上下文切換類

     @Component("salaryContext")
     public class SalaryContext {
         @Autowired
         private final Map salaryMap = new ConcurrentHashMap<>(3);
         public void getSalary(String serviceName) {
             salaryMap.get(serviceName).getSalary();
         }
     }
  4. 測(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):

  1. 首先檢測(cè)測(cè)試類包名和啟動(dòng)類包名是否一致
  2. @SpringBootTest(classes = Application.class) application為該項(xiàng)目的正常啟動(dòng)類
  3. @Test導(dǎo)包的是org.junit.Test
  4. Application記得配置掃描目錄 @SpringBootApplication(scanBasePackages = {"com.xxx"})

網(wǎng)站標(biāo)題:優(yōu)雅替代ifelse判斷邏輯-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/igojc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部