天天看點

設計模式(政策+工廠)---優化過多 if else 代碼

我們平時在開發的過程中,肯定會大量的出現if else這種類型的代碼,随着業務量的上升,if else代碼格式過于複雜,導緻代碼可讀性降低,今天,小編就帶大家來利用設計模式之政策和工廠模式來優化if else代碼,代碼如下所示:

if(a){
	//dosomething
}else if(b){
	//doshomething
}else if(c){
	//doshomething
} else{
	doshomething
}
           

政策模式

首先,利用政策模式來優化doSomething。

第一步、建立政策接口類。

public interface IMedalService {
    void showMedal();
}
           

第二步、根據不同的邏輯去實作政策。

public class GuestMedalServiceImpl implements IMedalService {
    @Override
    public void showMedal() {
        System.out.println("嘉賓勳章");
    }
}

public class VipMedalServiceImpl implements IMedalService {
    @Override
    public void showMedal() {
        System.out.println("會員勳章");
    }
}
           

工廠模式

其次,利用工廠模式集中建立實作所需要的政策對象。此處,是通過map來實作不同的政策對象的建立,與此同時,建立工廠類時,需要向外部提供一個可以供外部調用的方法,即:getMedalService()方法。

public class MedalServicesFactory {
    private static final Map<String,IMedalService> map=new HashMap<>();
    static {
        map.put("guard", new GuardMedalServiceImpl());
        map.put("vip", new VipMedalServiceImpl());
        map.put("guest", new GuestMedalServiceImpl());
    }
    public static IMedalService getMedalService(String medalType){
        return map.get(medalType);
    }
}
           

實際應用

public class Test {
    public static void main(String[] args) {
        String medalType="guest";
        IMedalService medalService = MedalServicesFactory.getMedalService(medalType);
        medalService.showMedal();
    }
}
           

通過工廠類中的getMedalService方法來實作了不同邏輯政策的調用,進而有效地提升了代碼的整潔度,也友善了開發人員去根據不同的政策邏輯,去實作IMedalService接口。

繼續閱讀