没有合适的资源?快使用搜索试试~ 我知道了~
01-02-01-为什么要从设计模式开始及工厂模式详解1
需积分: 0 0 下载量 84 浏览量
2022-08-04
15:55:03
上传
评论
收藏 1.09MB PDF 举报
温馨提示
试读
41页
1、通过对本章内容的学习,了解设计模式的由来 2、介绍设计模式能帮我们解决哪些问题 3、剖析工厂模式的历史由来及应用场景
资源详情
资源评论
资源推荐
咕泡出品,必属精品 www.gupaoedu.com
1
课程目标
1、通过对本章内容的学习,了解设计模式的由来。
2、介绍设计模式能帮我们解决哪些问题。
3、剖析工厂模式的历史由来及应用场景。
内容定位
不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模
式最重要的是解耦。设计模式天天都在用,但自己却无感知。我们把设计模式作为一个
专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻
炼将业务需求转换技术实现的一种非常有效的方式。
回顾软件设计原则
在讲设计模式之前,我们一定要先了解软件设计原则。现在先来回顾一下软件设计七大
原则:
设计原则
解释
开闭原则
对扩展开放,对修改关闭。
依赖倒置原则
通过抽象使各个类或者模块不相互影响,实现松耦合。
单一职责原则
一个类、接口、方法只做一件事。
接口隔离原则
尽量保证接口的纯洁性,客户端不应该依赖不需要的接口。
迪米特法则
又叫最少知道原则,一个类对其所依赖的类知道得越少越好。
咕泡出品,必属精品 www.gupaoedu.com
2
里氏替换原则
子类可以扩展父类的功能但不能改变父类原有的功能。
合成复用原则
尽量使用对象组合、聚合,而不使用继承关系达到代码复用的目的。
为什么我们的课程要从设计模式开始?
先来看个生活案例,当我们开心之时,总会寻求发泄的方式。在学设计模式之前,你可
能会这样感叹:
学完设计模式之后,你可能会这样感叹:
大家对比一下前后的区别,有何感受?
回到代码中,我们来思考一下,设计模式能帮我们解决哪些问题?
写出优雅的代码
先来看一段很多年以前写的代码:
public void setCurForm(Gw_exammingForm curForm,String parameters)throws BaseException {
喝酒唱歌,人生真爽,
......
......
喝酒唱歌,人生真爽,
......
......
对酒当歌,人生几何?
......
......
喝
酒
唱
歌
人
生
真
爽
对
当
几
何
咕泡出品,必属精品 www.gupaoedu.com
3
JSONObject jsonObj = new JSONObject(parameters);
//试卷主键
if(jsonObj.getString("examinationPaper_id")!= null &&
(!jsonObj.getString("examinationPaper_id").equals("")))
curForm.setExaminationPaper_id(jsonObj.getLong("examinationPaper_id"));
//剩余时间
if(jsonObj.getString("leavTime") != null && (!jsonObj.getString("leavTime").equals("")))
curForm.setLeavTime(jsonObj.getInt("leavTime"));
//单位主键
if(jsonObj.getString("organization_id")!= null &&
(!jsonObj.getString("organization_id").equals("")))
curForm.setOrganization_id(jsonObj.getLong("organization_id"));
//考试主键
if(jsonObj.getString("id")!= null && (!jsonObj.getString("id").equals("")))
curForm.setId(jsonObj.getLong("id"));
//考场主键
if(jsonObj.getString("examroom_id")!= null &&
(!jsonObj.getString("examroom_id").equals("")))
curForm.setExamroom_id(jsonObj.getLong("examroom_id"));
//用户主键
if(jsonObj.getString("user_id")!= null && (!jsonObj.getString("user_id").equals("")))
curForm.setUser_id(jsonObj.getLong("user_id"));
//专业
if(jsonObj.getString("specialtyCode")!= null &&
(!jsonObj.getString("specialtyCode").equals("")))
curForm.setSpecialtyCode(jsonObj.getLong("specialtyCode"));
//岗位
if(jsonObj.getString("postionCode")!= null &&
(!jsonObj.getString("postionCode").equals("")))
curForm.setPostionCode(jsonObj.getLong("postionCode"));
//等级
if(jsonObj.getString("gradeCode")!= null && (!jsonObj.getString("gradeCode").equals("")))
curForm.setGradeCode(jsonObj.getLong("gradeCode"));
//考试开始时间
curForm.setExamStartTime(jsonObj.getString("examStartTime"));
//考试结束时间
curForm.setExamEndTime(jsonObj.getString("examEndTime"));
//单选题重要数量
if(jsonObj.getString("single_selectionImpCount")!= null &&
(!jsonObj.getString("single_selectionImpCount").equals("")))
curForm.setSingle_selectionImpCount(jsonObj.getInt("single_selectionImpCount"));
//多选题重要数量
if(jsonObj.getString("multi_selectionImpCount")!= null &&
咕泡出品,必属精品 www.gupaoedu.com
4
(!jsonObj.getString("multi_selectionImpCount").equals("")))
curForm.setMulti_selectionImpCount(jsonObj.getInt("multi_selectionImpCount"));
//判断题重要数量
if(jsonObj.getString("judgementImpCount")!= null &&
(!jsonObj.getString("judgementImpCount").equals("")))
curForm.setJudgementImpCount(jsonObj.getInt("judgementImpCount"));
//考试时间
if(jsonObj.getString("examTime")!= null && (!jsonObj.getString("examTime").equals("")))
curForm.setExamTime(jsonObj.getInt("examTime"));
//总分
if(jsonObj.getString("fullScore")!= null && (!jsonObj.getString("fullScore").equals("")))
curForm.setFullScore(jsonObj.getLong("fullScore"));
//及格分
if(jsonObj.getString("passScore")!= null && (!jsonObj.getString("passScore").equals("")))
curForm.setPassScore(jsonObj.getLong("passScore"));
//学员姓名
curForm.setUserName(jsonObj.getString("user_name"));
//分数
if(jsonObj.getString("score")!= null && (!jsonObj.getString("score").equals("")))
curForm.setScore(jsonObj.getLong("score"));
//是否及格
curForm.setResult(jsonObj.getString("result"));
curForm.setIsPassed(jsonObj.getString("result"));
//单选答对数量
if(jsonObj.getString("single_ok_count")!= null &&
(!jsonObj.getString("single_ok_count").equals("")))
curForm.setSingle_ok_count(jsonObj.getInt("single_ok_count"));
//多选答对数量
if(jsonObj.getString("multi_ok_count")!= null &&
(!jsonObj.getString("multi_ok_count").equals("")))
curForm.setMulti_ok_count(jsonObj.getInt("multi_ok_count"));
//判断答对数量
if(jsonObj.getString("judgement_ok_count")!= null &&
(!jsonObj.getString("judgement_ok_count").equals("")))
curForm.setJudgement_ok_count(jsonObj.getInt("judgement_ok_count"));
}
优化之后的代码:
public class ExamPaper extends Gw_exammingForm{
private String examinationPaperId;//试卷主键
咕泡出品,必属精品 www.gupaoedu.com
5
private String leavTime;//剩余时间
private String organizationId;//单位主键
private String id;//考试主键
private String examRoomId;//考场主键
private String userId;//用户主键
private String specialtyCode;//专业代码
private String postionCode;//报考岗位
private String gradeCode;//报考等级
private String examStartTime;//考试开始时间
private String examEndTime;//考试结束时间
private String singleSelectionImpCount;//单选选题重要数量
private String multiSelectionImpCount;//多选题重要数量
private String judgementImpCount;//判断题重要数量
private String examTime;//考试时长
private String fullScore;//总分
private String passScore;//及格分
private String userName;//学员姓名
private String score;//考试得分
private String resut;//是否及格
private String singleOkCount;//单选题答对数量
private String multiOkCount;//多选题答对数量
private String judgementOkCount;//判断题答对数量
}
public void setCurFormpublic void setCurForm(Gw_exammingForm curForm,String parameters)throws
BaseException {
try {
JSONObject jsonObj = new JSONObject(parameters);
ExamPaper examPaper = JSONObject.parseObject(parameters,ExamPaper.class);
curForm = examPaper;
}catch (Exception e){
e.printStackTrace();
}
}
更好地重构项目
平时我们写的代码虽然满足了需求但往往不利于项目的开发与维护,以下面的 JDBC 代码
为例:
剩余40页未读,继续阅读
无声远望
- 粉丝: 52
- 资源: 298
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0