設計模式之工廠模式和策略模式

工廠模式的使用場景是爲了統一管理對象的實例化,當對象改變的時候不需要改動太大代碼量就能增加或修改,以便代碼的維護。


首先有一個Car的接口

public interface Car{
  public void run();
}


接下來寶馬和奔馳分別實現了該接口


</pre>public class BMW implements Car{<span style="white-space:pre">	</span>@Override<span style="white-space:pre">	</span>public void run() {<span style="white-space:pre">		</span>System.out.println("寶馬在飛馳");<span style="white-space:pre">	</span>}}<pre name="code" class="java">

</pre>public class Benz implements Car{<span style="white-space:pre">	</span>@Override<span style="white-space:pre">	</span>public void run() {<span style="white-space:pre">		</span>System.out.println("奔馳在飛馳");<span style="white-space:pre">	</span>}}<pre name="code" class="java">


汽車工廠:


public class CarFactory {

public Car createCar(String car){
if("BMW".equals(car)){
return new BMW();
}else{
return new Benz();
}
}

}


簡單工廠模式就是在工廠裏面生產用戶需要的對象,不需要用戶實例化,對象由工廠維護。


貼一下在寫的代碼裏的應用:

import java.util.List;


import com.toone.xmdj.util.validator.ValidatorResultMessge;


public class ValidatorTypeContext {

private ValidatorTypeAbstract val = null;

public ValidatorTypeContext(String str,Object obj){
if("Map".equals(str)){
ValidatorTypeWithMapUtil cs = new ValidatorTypeWithMapUtil(obj);
val=cs;
   }else if("Entity".equals(str)){
    ValidatorTypeWithEntityUtil cs = new ValidatorTypeWithEntityUtil(obj);
    val=cs;
    System.out.println();
   }
}

public ValidatorResultMessge selectValidatorTypeMap(Object obj,List<String> checkList) throws Exception{
ValidatorResultMessge result = new ValidatorResultMessge();
if("checkNotNull".equals(obj)){
    result = val.checkNotNull(checkList);
   }else if("checkIsNumber".equals(obj)){
    result = val.checkIsNumber(checkList);
   }else if("checkIsMobile".equals(obj)){
    result = val.checkIsMobile(checkList);
   }
return result;
}


}


我的代碼裏是通過Context構造方法實例化ValidatorTypeAbstract 對象,並在selectValidatorTypeMap使用這個實例化的對象。同時我這裏也採用了策略模式,ValidatorTypeAbstract 作爲抽象的策略類,ValidatorTypeWithMapUtil 和ValidatorTypeWithEntityUtil 分別是實現策略類的具體策略。通過Context(環境類)對策略類進行實例化,並使用相應的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章