南华大学软件设计模式实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南华大学
计算机科学与技术学院软件体系结构与设计模式作业
(2016秋季学期)
学号:***********
班级:软件工程1班
*名:***
任课老师:蒋良卫
作业内容:创建型设计模式
日期:2016 年11 月6 日
1 简单工厂模式
1.1 作业题目
使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W。则返回一个对象Woman,用java语言实现该场景。现在需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。
(1)绘制简单工厂模式结构视图;
(2)请绘制该实例类图,并代码实现。
1.2 所用模式结构视图
1.3 实例类图
1.4 实例实现代码
公共类:lrz0101Person
package com.bluesky;
public class lrz0101Person {
public void play(){
System.out.println("我还是一坨泥巴,女娲还没有构造我!");
}
}
简单工厂类:lrz0101NvWa
package com.bluesky;
public class lrz0101NvWa {
public lrz0101Person madeMan(String s){
lrz0101Person person = null;
switch(s){
case"M":
person = new lrz0101Man();
break;
case"W":
person = new lrz0101Woman();
break;
case"R":
person = new lrz0101Robot();
break;
default:
System.out.println("Sorry,女娲暂时没有造这种人的能力");
person=new lrz0101Person();
}
return person;
}
}
子类1:lrz0101Man
package com.bluesky;
public class lrz0101Man extends lrz0101Person{ public void play(){
System.out.println("大家好,我是男人!我来自地球!");
}
}
子类2:lrz0101Woman
package com.bluesky;
public class lrz0101Woman extends lrz0101Person{ public void play(){
System.out.println("大家好,我是女人!我来自水星!");
}
}
子类2:lrz0101Robot
package com.bluesky;
public class lrz0101Robot extends lrz0101Person{ public void play(){
System.out.println("大家好,我是机器人!我来未知星球!");
}
}
1.5 运行结果
2 工厂模式
2.1 作业题目
现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器ImgReader,如gif图片读取器GifReader用于读取gif格式的图片,jpg图片读取器JPGReader用于读取jpg格式的图片。图片读取器对象通过图片读取器工厂ImgReaderFactory来创建。ImgReaderFactory是一个抽象类,用于定义创建图片读取器的工厂方法,其GifReaderFactory和JPGReaderFactory用于创建具体的图片读取器对象。使用工厂方法模式,实现该程序的设计。
(1)绘制工厂模式结构视图
(2)给出实例类图并实现代码。
2.2 所用模式结构视图
2.3 实例类图
2.4 实例实现代码
图片读取工厂类:lrz0101ImageReaderFactory
package com.bluesky1;
public class lrz0101ImageReaderFactory {
public lrz0101ImageReaderFactory productReaderFactory(String s) {
lrz0101ImageReaderFactory reader =null;
if(s.equals("JPG")){
reader = new lrz0101JpgReaderFactory(); }
else if(s.equals("GIF")){
reader = new lrz0101GifReaderFactory();
}
else{
reader =new lrz0101ImageReaderFactory(); }
return reader;
}
}
Jpg图片读取工厂类:lrz0101JpgReaderFactory
package com.bluesky1;
public class lrz0101JpgReaderFactory extends
lrz0101ImageReaderFactory{
public lrz0101ImageReader productImageReader(){ lrz0101ImageReader iread = new
lrz0101GifReader();
return iread;
}
}
Gif图片读取工厂类:lrz0101JpgReaderFactory
package com.bluesky1;
public class lrz0101GifReaderFactory extends
lrz0101ImageReaderFactory {