1. 程式人生 > >新環境第一次使用設計模式有感

新環境第一次使用設計模式有感

設計模式 mod 新環境 return pat uil 。。 val dmi

  換了一家公司,感覺好對不起以前那些領導的栽培和培養啊,但是沒辦法,我真的受不了那些煙味和每天加班到好晚好晚的工作環境,也許這就是所謂的不合吧。。

到了新的一家公司,明顯比剛出來的時候要好太多,別人一說什麽東西我都會有反應,而且不會一臉懵b的問別人還不知道別人說了些啥。。感覺??。

  閑話不多說,先看在這邊用到過的設計模式的思想,首先第一個命令模式+策略模式+構造模式(只是用到了其中的思想,但不是標準的用法)

  需求:在每個頁面中實現匹配功能,每個頁面要匹配多條主數據,每條主數據匹配後,將匹配的關鍵數據再保存到另一個表中做為匹配記錄,進行備份。

  思路:每一個頁面對應一個實體,每個實體都要按照不同的策略產生多條主數據匹配信息的實體。於是我想定義一個接口,這個接口產生一條匹配記錄,將不同需要產生記錄實體的主數據實現該接口(按不同的策略實現不同的功能和數據),然後定義一個類(命令類)執行這個接口裏面的方法。代碼如下:

/**
* 根據不同的實現類實現不同的TmOdsDygx數據
* 然後根據生成出來的數據進行保存
*/
public interface EntityBuild {
public void saveTmOdsDygx(String dubboCode);
}

/**
* 保存EntityBuild的集合,並提供執行命令的方法
*/
public class BuildContext {
private List<EntityBuild> ebs = new ArrayList<EntityBuild>();

public void saveEntity(String dubboCode){
for(EntityBuild eb:this.ebs){
if(eb != null) {
eb.saveTmOdsDygx(dubboCode);
}
}
}
public void addEntity(EntityBuild entity){
ebs.add(entity);
}
}

  /*****************************************此類實現該接口***************************************/

    @Override
public void saveTmOdsDygx(String dubboCode) {//實現該接口方法
if(StringUtils.isNotBlank(this.id)) {
TmOdsdygx tmOdsdygx = new TmOdsdygx();
tmOdsdygx.setOdsName(this.mc);
tmOdsdygx.setTmZsjqd("22");
tmOdsdygx.setTmId(this.id);
tmOdsdygx.setTmCode(this.dyBm);
tmOdsdygx.setTmName(this.dyMc);
DubboResourceLoadUtils.invoikeDubbo1(dubboCode, "tmOdsdygxService", "save", tmOdsdygx, null);
}
}
}
/***************************************************************************************/
@RequestMapping(value = "plSave",method = RequestMethod.POST)
public String plSave(OdsScPzwh osp ,RedirectAttributes redirectAttributes){//調用模板+命令模式
List<OdsScPzwh> osps = osp.getOdsScPzwhs();
String dubboCode = officeService.get(UserUtils.getUser().getCompany().getId()).getDubboCode();
String [] ppCheck = osp.getAllCheck().split(",");
for(OdsScPzwh o : osps){
if(o != null){
for (int i = 0; i < ppCheck.length; i++) {
if(o.getId().equals(ppCheck[i])){
BuildContext bc = new BuildContext();//實例化一個命令類
bc.addEntity(o.getTmXscpfl());//將實現策略接口的類添加進來
bc.addEntity(o.getTmJt());
bc.addEntity(o.getTmPpcj());
bc.saveEntity(dubboCode);//用命令類執行這些策略
}
}
DubboResourceLoadUtils.invoikeDubbo1(dubboCode, "odsScPzwhService", "matchUpdate", o, null);
}
}
addMessage(redirectAttributes, "成功匹配");
return "redirect:"+Global.getAdminPath()+"/scbwh/odsScPzwh";
}

我看見好的博客寫手他們的代碼都有背景,我都不知道怎麽弄,所以有相關經驗的人記得密我,告訴我怎麽樣才能把這樣的隨筆寫的更加精致哈~~~
使用設計模式後發現確實少了好多的重復代碼,而且不需要到處去找別的地方的代碼復制粘貼了,也是體驗了一把設計模式的好處吧。
嘿嘿嘿,這只是工作一年經驗的人寫的一波隨筆,希望各位牛逼的大佬多來指點指點小弟哈~~~~~~~~~~~~~

新環境第一次使用設計模式有感