我們平時在開發的過程中,肯定會大量的出現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接口。