2024年6月18日发(作者:)
设计模式实验报告
学 院: 学院
专 业: 班
姓 名:
学 号:
指导教师:
一. 实例
实例:简单工厂模式
使用简单工厂模式设计一个可以创建不同几何形状(圆形、方形和三角形等)的绘图工具,每个几何图形都
要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个Unsupportedshapeexception.
要求真正做出来,不要使用n。
图:
geometryfctory
<
graph
+draw(Graphics): void
+erase(Graphics) : void
renshow(String):static graph
rectangle
+draw(Graphic): void
+erase(Graphics) : void
triangle
+draw(Graphics): void
+erase(Graphics) : void
circle
+draw(Graphics): void
+erase(Graphics) : void
2.源代码
package simplefactory2;
import cs;
public interface graph { void draw(Graphics g); void erase(Graphics g); }
package simplefactory2;
import cs;
public class circle implements graph{
@Override
public void draw(Graphics g) { al(20, 60, 60, 60); }
@Override
public void erase(Graphics g) { ect(18, 55, 63, 68); }}
package simplefactory2;
import cs;
public class rectangle implements graph{
@Override
public void draw(Graphics g) {ct(160, 60, 60, 60);}
@Override
public void erase(Graphics g) {ect(159, 58, 66, 66);}}
package simplefactory2;
import cs;
public class triangle implements graph{
@Override
public void draw(Graphics g) {
int[]xPoints={80,120,150}; int[]yPoints={70,120,70}; int nPoints=3;
lygon(xPoints, yPoints, nPoints); }
@Override
public void erase(Graphics g) { ect(81, 70, 70, 60); }}
package simplefactory2;
public class geometryfctory {
static graph renshow(String type) throws Exception{
if("circle".equals(type)){ return new circle();}
else if("triangle".equals(type)){ return new triangle();}
else if("rectangle".equals(type)){ return new rectangle();}
else{throw new Exception("Unsupportedshapeexception");}}}
package simplefactory2;
import ;
发布者:admin,转转请注明出处:http://www.yc00.com/news/1718696040a2751905.html
评论列表(0条)