南华大学软件设计模式实验Word文档下载推荐.docx
《南华大学软件设计模式实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《南华大学软件设计模式实验Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
lrz0101Person
packagecom.bluesky;
publicclasslrz0101Person{
publicvoidplay(){
System.out.println("
我还是一坨泥巴,女娲还没有构造我!
"
);
}
}
简单工厂类:
lrz0101NvWa
publicclasslrz0101NvWa{
publiclrz0101PersonmadeMan(Strings){
lrz0101Personperson=null;
switch(s){
case"
M"
:
person=newlrz0101Man();
break;
W"
person=newlrz0101Woman();
R"
person=newlrz0101Robot();
default:
System.out.println("
Sorry,女娲暂时没有造这种人的能力"
person=newlrz0101Person();
}
returnperson;
子类1:
lrz0101Man
publicclasslrz0101Manextendslrz0101Person{
System.out.println("
大家好,我是男人!
我来自地球!
子类2:
lrz0101Woman
publicclasslrz0101Womanextendslrz0101Person{
大家好,我是女人!
我来自水星!
lrz0101Robot
publicclasslrz0101Robotextendslrz0101Person{
大家好,我是机器人!
我来未知星球!
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
packagecom.bluesky1;
publicclasslrz0101ImageReaderFactory{
publiclrz0101ImageReaderFactoryproductReaderFactory(Strings){
lrz0101ImageReaderFactoryreader=null;
if(s.equals("
JPG"
)){
reader=newlrz0101JpgReaderFactory();
elseif(s.equals("
GIF"
reader=newlrz0101GifReaderFactory();
else{
reader=newlrz0101ImageReaderFactory();
}
returnreader;
Jpg图片读取工厂类:
lrz0101JpgReaderFactory
publicclasslrz0101JpgReaderFactoryextendslrz0101ImageReaderFactory{
publiclrz0101ImageReaderproductImageReader(){
lrz0101ImageReaderiread=newlrz0101GifReader();
returniread;
Gif图片读取工厂类:
publicclasslrz0101GifReaderFactoryextendslrz0101ImageReaderFactory{
publiclrz0101ImageReaderproductImageReader(){
图片读取器类:
lrz0101ImageReader
publicclasslrz0101ImageReader{
publicvoidreadImage(){
Jpg图片读取器类:
lrz0101JpgReader
publicclasslrz0101JpgReaderextendslrz0101ImageReader{
lrz0101ImageReaderiread=newlrz0101JpgReader();
Gif图片读取器类:
lrz0101GifReader
publicclasslrz0101GifReaderextendslrz0101ImageReader{
ReadGIFImage"
测试类:
Test
publicclasslrz0101Test{
publicstaticvoidmain(String[]args){
lrz0101Testtest=newlrz0101Test();
lrz0101ImageReaderFactoryirf=newlrz0101ImageReaderFactory();
lrz0101ImageReaderFactory
ir=irf.productReaderFactory("
lrz0101ImageReaderFactoryir1=irf.productReaderFactory("
lrz0101ImageReaderFactoryir2=irf.productReaderFactory("
PNG"
piti(ir);
piti(ir1);
piti(ir2);
publicstaticvoidcompiti(lrz0101ImageReaderFactoryir){
if(irinstanceoflrz0101JpgReaderFactory){
ir=(lrz0101JpgReaderFactory)ir;
lrz0101ImageReaderireader=((lrz0101JpgReaderFactory)ir).productImageReader();
ireader.readImage();
}elseif(irinstanceoflrz0101GifReaderFactory){
ir=(lrz0101GifReaderFactory)ir;
lrz0101ImageReaderireader=((lrz0101GifReaderFactory)ir).productImageReader();
}else{
无法读取该类型的图片格式"
2.5运行结果
3抽象工厂模式
3.1作业题目
某软件公司要推出一款新的手机游戏软件,该软件支持IOS、Android和WindowsPhone等多个智能手机操作系统平台,针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制类(OperatioinController)游戏界面控制类(InterfaceController),并提供的相应的工厂类来封装这些类的初始化过程。
该软件要求具有较好的扩展性,以支持新的操作系统平台,为了满足上述要求,试采用抽象工厂模式对其进行设计。
(1)绘制抽象工厂模式结构视图;
3.2所用模式结构视图
3.3实例类图
3.4实例实现代码
操作系统父类:
lrz0101OperatingSystem
packagecom.bluesky4;
publicclasslrz0101OperatingSystem{
publiclrz0101GameControllergc;
publiclrz0101GameUiControllerguic;
publiclrz0101GameControllergetGameCtroller(){
returngc;
publiclrz0101GameUiControllergetGameUiController(){
returnguic;
游戏控制父类:
lrz0101GameController
publicclasslrz0101GameController{
游戏控制加载中。
。
游戏界面控制父类:
lrz0101GameUiController
publicclasslrz0101GameUiController{
publicvoidshowUI(){
界面加载中。
IOS工厂类:
lrz0101IosSystem
publicclasslrz0101IosSystemextendslrz0101OperatingSystem{
this.gc=newlrz0101IosGameController();
returnthis.gc;
this.guic=newlrz0101IosUiController();
returnthis.guic;
Android工厂类:
lrz0101AndroidSystem
publicclasslrz0101AndroidSystemextendslrz0101OperatingSystem{
this.gc=newlrz0101AndroidGameControlller();
this.guic=newlrz0101AndroidUiController();
Windows工厂类:
lrz0101WindowsSystem
publicclasslrz0101WindowsSystemextendslrz0101OperatingSystem{
this.gc=newlrz0101WindowsGameController();
this.guic=newlrz0101WindoswUiController();
IOS游戏控制类:
lrz0101IosGameController
publicclasslrz0101IosGameControllerextendslrz0101GameController{
IOS游戏控制加载中......"
IOS游戏界面控制类:
lrz0101IosUiController
publicclasslrz0101IosUiControllerextendslrz0101GameUiController{
IOS游戏界面加载中......"
publicvoidp(){
Hello"
Android游戏控制类:
lrz0101AndroidGameControlller
publicclasslrz0101AndroidGameControlllerextendslrz0101GameController{
Android游戏控制加载中......"
Android游戏界面控制类:
publicclasslrz0101AndroidUiControllerextendslrz0101GameUiController{
Android游戏界面加载中......"
Windows游戏控制类:
lrz0101WindowsGameController
publicclasslrz0101WindowsGameControllerextendslrz0101GameController{
Windows游戏控制加载中......"
Windows游戏界面控制类:
lrz0101WindoswUiController
publicclasslrz0101WindoswUiControllerextendslrz0101GameUiController{
Windows游戏界面加载中......"
lrz0101Test
publicstaticvoidmain(String[]args){
lrz0101Testtest=newlrz0101Test();
lrz0101OperatingSystemios=newlrz0101IosSystem();
lrz0101OperatingSystemandroid=newlrz0101AndroidSystem();
lrz0101OperatingSystemwindows=newlrz0101WindowsSystem();
test.show(ios);
System.out.println();
test.show(android);
test.show(windows);
publicstaticvoidshow(lrz0101OperatingSystemios){
lrz0101OperatingSystemos;
lrz0101GameControlleriosgc;
lrz0101GameUiControlleriosuic;
iosgc=ios.getGameCtroller();
iosuic=ios.getGameUiController();
iosgc.play();
iosuic.showUI();
3.5运行结果
4建造者模式
4.1作业题目
某软件公司要开发一个视频播放软件,为了给用户提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。
在不同的显示模式下,主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下,将显示主窗口、控制条、收藏列表等。
试用建造者模式设计软件。
(1)给出建造者模式等结构视图
(2)给出该实例等类图及代码实现
4.2所用模式结构视图
4.3实例类图
4.4实例实现代码
主窗口类:
lrz0101MainScreen
packagecom.bluesky3;
publicclasslrz0101MainScreen{
publicStringmenu;
publicStringplayList;
publicStringmainWindow;
publicStringcontrolBar;
模式建造类:
lrz0101ModelBulider
packagecom.bluesky3;
publicclasslrz0101ModelBulider{
protectedlrz0101MainScreenscreen=newlrz0101MainScreen();
publicvoidbuildMenu(){
publicvoidbuildPlayList(){
publicvoidbuildMainWindow(){
publicvoidbuildControlBar(){
}
publiclrz0101MainScreengetScreen(){
returnscreen;
模式控制类:
lrz0101ModelController
publicclasslrz0101ModelController{
privatelrz0101ModelBulidermb;
publicvoidsetModeBuilder(lrz0101ModelBulidermb){
this.mb=mb;
publiclrz0101MainScreenconstruct(){
mb.buildControlBar();
mb.buildMainWindow();
mb.buildPlayList();
mb.buildMenu();
mb.getScreen();
returnmb.getScreen();
完整显示类:
lrz0101FullStyle
publicclasslrz0101FullStyleextendslrz0101ModelBulider{
publicvoidbuildMenu(){
screen.menu="
菜单栏显示"
;
publicvoidbuildPlayList(){
screen.playList="
播放列表显示"