南华大学软件设计模式实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 {

相关文档
最新文档