新环境第一次使用设计模式有感

  换了一家公司,感觉好对不起以前那些领导的栽培和培养啊,但是没办法,我真的受不了那些烟味和每天加班到好晚好晚的工作环境,也许这就是所谓的不合吧。。

到了新的一家公司,明显比刚出来的时候要好太多,别人一说什么东西我都会有反应,而且不会一脸懵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";
}

我看见好的博客写手他们的代码都有背景,我都不知道怎么弄,所以有相关经验的人记得密我,告诉我怎么样才能把这样的随笔写的更加精致哈~~~
使用设计模式后发现确实少了好多的重复代码,而且不需要到处去找别的地方的代码复制粘贴了,也是体验了一把设计模式的好处吧。
嘿嘿嘿,这只是工作一年经验的人写的一波随笔,希望各位牛逼的大佬多来指点指点小弟哈~~~~~~~~~~~~~
posted @ 2018-03-17 08:46  小任猿  阅读(259)  评论(0编辑  收藏  举报