《Java设计模式》结课论文(2)
葡萄类的源代码如下所示。可以看出,Grape 类同样实现了水果接口,从而是水果类型的一种子类型。
代码清单3:类Grape 的源代码 public class Grape implements Fruit { private boolean seedless; //生长
public void grow() {
log(\} //收获
public void harvest() {
log(\} //种植
public void plant() {
log(\}
//辅助方法
public static void log(String msg) { System.out.println(msg); }
// 有无籽的取值方法 public boolean getSeedless() { return seedless; }
//有无籽的赋值方法
public void setSeedless(boolean seedless) { this.seedless = seedless; } }
Strawberry 类实现了Fruit 接口,因此,也是水果类型的子类型,其源代码如下所示。
代码清单4:类Strawberry 的源代码 public class Strawberry implements Fruit { //生长
public void grow() {
log(\} //收获
public void harvest() {
log(\} //种植
public void plant() {
log(\}
//辅助方法
public static void log(String msg) { System.out.println(msg); }
}
农场的园丁也是系统的一部分,自然要由一个合适的类来代表。这个类就FruitGardener 类,其结构由下面描述。
FruitGardener 类会根据客户端的要求,创建出不同的水果对象,比如苹果(Apple),葡萄(Grape)或草莓(Strawberry)的实例。而如果接到不合法的要求,FruitGardener 类会抛出BadFruitException 异常。 园丁类的源代码如下所示。
代码清单5:FruitGardener 类的源代码 public class FruitGardener { //静态工厂方法
public static Fruit factory(String which) throws BadFruitException { if (which.equalsIgnoreCase(\ return new Apple(); }
else if (which.equalsIgnoreCase(\ return new Strawberry(); }
else if (which.equalsIgnoreCase(\ return new Grape(); } else {
throw new BadFruitException(\ } } }
可以看出,园丁类提供了一个静态工厂方法。在客户端的调用下,这个方法创建客户端所需要的水果对象。如果客户端的请求是系统所不支持的,工厂方法就会抛出一个BadFruitException 异常。这个异常类的源代码如下所示。 代码清单6:BadFruitException 类的源代码
public class BadFruitException
extends Exception {
public BadFruitException(String msg) { super(msg); } }
在使用时,客户端只需调用FruitGardener 的静态方法factory()即可。请见下面的示意性客户端源代码。
代码清单7:实现种植即Main()的实现 public class PlantFruit { public PlantFruit() { }
public static void main(String[] args) { PlantFruit plantfruit = new PlantFruit(); try {
//种植葡萄
FruitGardener.factory(\ FruitGardener.factory(\ FruitGardener.factory(\
System.out.println(\ //种植苹果
FruitGardener.factory(\
FruitGardener.factory(\ FruitGardener.factory(\
System.out.println(\ //种植草莓
FruitGardener.factory(\ FruitGardener.factory(\ FruitGardener.factory(\
System.out.println(\ }
catch (BadFruitException e) { } } }
到此为止,我们的简单程序已经设计完成,我们可以通过创建FruitGardener对象来完成水果的种植,无论你要种什么,只需调用对象中的factory()方法。 工厂类的示意性源代码如下所示。可以看出,这个工厂方法创建了一个新的具体产品的实例并返还给调用者。 代码清单8:Creator 类的源代码 public class Creator {
//静态工厂方法
public static Product factory() {
return new ConcreteProduct(); } }
…… 此处隐藏:407字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介




