从头认识java14 复用代码.docx
- 文档编号:5813574
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:12
- 大小:17.61KB
从头认识java14 复用代码.docx
《从头认识java14 复用代码.docx》由会员分享,可在线阅读,更多相关《从头认识java14 复用代码.docx(12页珍藏版)》请在冰豆网上搜索。
从头认识java14复用代码
从头认识java-1.4复用代码
这一章节我们来讨论一下复用代码。
1.为什么?
这一点我也不详细展开了,随便说说都可以说出几个理由。
笔者总结了一下:
对于老板:
降低成本,缩短开发时间,追求利润最大化
对于teamleader:
加快进度,压缩工期,最短时间交付最多项目
对于程序猿:
不用加班
2.怎么做?
笔者分成四个方面来描述:
1)在方法层面:
例如:
我们平常在很多地方都需要时间这个东西,但是我们就可能复制粘贴下面的代码
[java] viewplaincopy
1.Calendar calendar = Calendar.getInstance();
2.int thisMonth = calendar.get(Calendar.MONTH)+1;
搞到代码里面各处都是获取时间,这个时候其实我们可以抽取些代码,形成时间类
[java] viewplaincopy
1./**
2. * 处理日期时间工具类
3. * @author ray
4. */
5.public class DateUtil {
6. /**
7. * @return 获得当前Calendar
8. */
9. public static Calendar getCalendar(){
10. Calendar calendar = Calendar.getInstance();
11. return calendar;
12. }
13. /**
14. * @return 获得今年
15. */
16. public static int getThisYear(){
17. return getCalendar().get(Calendar.YEAR);
18. }
19. /**
20. * @return 获得本月
21. */
22. public static int getThisMonth(){
23. return getCalendar().get(Calendar. MONTH)+1;
24. }
25. /**
26. * @return 获得当前时间
27. */
28. public static Date getNow(){
29. return getCalendar().getDate();
30. }
31.}
又例如:
在系统里面我们需要处理servlet传回来的数据
[java] viewplaincopy
1.double amount = Double.valueOf(req.getParameter(“amount”)).doubleValue();
2.int count = Integer.valueOf(req.getParameter(“count”)).intValue();
3.String name = new String(req.getParameter(“name”).getBytes(),"GBK");
4.Date now = DateUtil.getDate(req.getParameter(“now”),"yyyy-MM-dd");
我们可以抽象成一个转换器的类
[java] viewplaincopy
1./**
2. * 默认的读取器,读取POST提交的数据
3. * @author raylee
4. */
5.public class Converter {
6. private HttpServletRequest req = null;
7. /*
8. * 转换器
9. * @param HttpServletRequest
10. */
11. public Converter(HttpServletRequest req) throws IOException {
12. this.req = req;
13. }
14. /*
15. * @param 名称
16. * @return the data of Object
17. */
18. public Object getData(String name) throws IOException {
19. Object data = req.getParameter(name);
20. if (data==null) {
21. throw new IOException("转换器失败");
22. }
23. return data;
24. }
25. /*
26. * @param 名称
27. * @return 返回double
28. */
29. public double getDouble(String name) throws IOException {
30. return Double.valueOf(getString(name)).doubleValue();
31. }
32. /*
33. * @param 名称
34. * @return 返回整数
35. */
36. public int getInteger(String name) throws IOException {
37. return Integer.valueOf(getString(name)).intValue();
38. }
39. /*
40. * @param 名称
41. * @return 返回字符串
42. */
43. public String getString(String name) throws IOException {
44. return getData(name).toString();
45. }
46. /*
47. * @param 名称
48. * @return 返回GBK编码
49. */
50. public String getChinese(String name) throws IOException {
51. return new String(getString(name).getBytes(),"GBK");
52. }
53.
54.}
2)在类层面:
(1)聚合
我们看下面的例子:
[java] viewplaincopy
1.package com.ray.ch01;
2.
3.public class Bird {
4.
5. private String name;
6.
7. public String getName() {
8. return name;
9. }
10.
11. public void setName(String name) {
12. if (name !
= null) {
13. this.name = name;
14. } else {
15. System.out.println("名称不能为空");
16. }
17. }
18.}
先建立一个Bird这一个类。
然后jack和rose同时养了一只小鸟
[java] viewplaincopy
1.package com.ray.ch01;
2.
3.public class Jack {
4. private Bird bird;
5.
6. public Bird getBird() {
7. return bird;
8. }
9.
10. public void setBird(Bird bird) {
11. this.bird = bird;
12. }
13.}
[java] viewplaincopy
1.package com.ray.ch01;
2.
3.public class Rose {
4. private Bird bird;
5.
6. public Bird getBird() {
7. return bird;
8. }
9.
10. public void setBird(Bird bird) {
11. this.bird = bird;
12. }
13.}
聚合,其实就是has-a关系,上面也是代码复用之一,两者复用了Bird这个类。
(2)继承
我们看下面的两个类
歌唱家:
[java] viewplaincopy
1.package com.ray.ch01;
2.
3.public class Singer {
4. private long id;
5. private String name;
6. private String sex;
7.
8. public long getId() {
9. return id;
10. }
11.
12. public void setId(long id) {
13. this.id = id;
14. }
15.
16. public String getName() {
17. return name;
18. }
19.
20. public void setName(String name) {
21. this.name = name;
22. }
23.
24. public String getSex() {
25. return sex;
26. }
27.
28. public void setSex(String sex) {
29. this.sex = sex;
30. }
31.
32. @Override
33. public String toString() {
34. return "id:
" + getId() + ";name:
" + getName() + ";sex:
" + getSex();
35. }
36.
37. public void sing() {
38.
39. }
40.
41.}
拳击手:
[java] viewplaincopy
1.package com.ray.ch01;
2.
3.public class Boxer {
4. private long id;
5. private String name;
6. private String sex;
7.
8. public long getId() {
9. return id;
10. }
11.
12. public void setId(long id) {
13. this.id = id;
14. }
15.
16. public String getName() {
17. return name;
18. }
19.
20. public void setName(String name) {
21. this.name = name;
22. }
23.
24. public String getSex() {
25. return sex;
26. }
27.
28. public void setSex(String sex) {
29. this.sex = sex;
30. }
31.
32. @Override
33. public String toString() {
34. return "id:
" + getId() + ";name:
" + getName() + ";sex:
" + getSex();
35. }
36.
37. public void fight() {
38.
39. }
40.
41.}
从上面的两个类可以看出,大家的代码几乎一样,这个时候我们可以抽象出一个人Person的类来,然后让singer和boxer来继承他
这里涉及的继承概念我们下一章节将详细展开。
[java] viewplaincopy
1.package com.ray.ch01;
2.
3.public class Person {
4. private long id;
5. private String name;
6. private String sex;
7.
8. public long getId() {
9. return id;
10. }
11.
12. public void setId(long id) {
13. this.id = id;
14. }
15.
16. public String getName() {
17. return name;
18. }
19.
20. public void setName(String name) {
21. this.name = name;
22. }
23.
24. public String getSex() {
25. return sex;
26. }
27.
28. public void setSex(String sex) {
29. this.sex = sex;
30. }
31.
32. @Override
33. public String toString() {
34. return "id:
" + getId() + ";name:
" + getName() + ";sex:
" + getSex();
35. }
36.}
我们将共性的代码放到里面,然后其他两个实现类将实现各自独有的代码即可。
[java] viewplaincopy
1.package com.ray.ch01;
2.
3.public class Boxer extends Person {
4.
5. public void fight() {
6.
7. }
8.
9.}
[java] viewplaincopy
1.package com.ray.ch01;
2.
3.public class Singer extends Person {
4.
5. public void sing() {
6.
7. }
8.
9.}
继承:
is-a关系,代码复用的重要手段。
3)在配置层面:
例如我们平常使用框架,一般都有配置文件,我们可以把这些配置文件集中管理,然后重复使用
4)在业务层面:
例如,现在企业内部存在多系统情况,但是一般来说每个系统都需要有登陆模块,我们可以把这个登陆模块单独抽取出来,变成构件,这样就可以重复使用。
总结:
这一章节主要讨论了如何复用代码。
这一章节就到这里,谢谢。
-----------------------------------
目录
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 从头认识java14 复用代码 从头 认识 java14 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)