设计模式课程设计.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:12 大小:1.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

设计模式课程设计.doc

设计模式课程设计.doc

预览

免费试读已结束,剩余 2 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

设计模式课程设计题目:画图程序学院:信息科学与技术学院专业:软件工程学号:20092384姓名:陈志1.需求分析该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。1.1设计模式要求至少在其中运用6种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。1.2画图基本要求能实现基本图形的绘制功能1.3画图高级要求实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等)和持久化(利用文件或利用数据库)。2.系统设计首先,画图程序可以实现绘制圆形、矩形和按钮,这里可以将圆形、矩形和按钮看作三个不同的类,那么我们可以采用抽象工厂的方式来创建它们。对于画组合图,我们可以采用组合模式将二者结合起来。而对于图形颜色或者粗细的改变,我们可以使用外观模式。然后,我们可以使用原型模式来实现对于最后一个图形的复制。在系统中可以使用代理模式来实现显示图片。下面是对需要用到的设计模式进行的分析。2.1使用设计模式2.1.1桥梁模式桥梁模式,结构型模式一种.设计程序过程中,会经常使用到抽象类或者接口来完成抽象的过程。继承或实现的类通过不同的实现方式来完成抽象类或接口的变化,也就是实现过程的变化,但可能会有这样的情况,抽象过程同样需要进行变化,也就是抽象类或者接口需要变化,这样就会造成原有的继承或实现关系复杂,关系混乱.桥梁模式利用将抽象层和实现层进行解耦,使两者不再像继承或实现这样的较强的关系,从而使抽象和实现层更加独立的完成变化的过程.使系统更加清晰。桥梁模式主要由抽象类、修正抽象类、实现类以及具体实现类组成.抽象类,制定接口,同时给出一个实现化的引用。修正抽象类,扩展抽象类,修正或改变抽象类中指定的接口。实现类,提供实现化角色的接口,但不进行具体实现过程,该接口不一定给出与抽象类相同的接口,只是提供实现的方式。具体实现类,完成实现类中定义的实现接口的具体实现过程。具体代码如下:packageBridgePattern;importjava.awt.Color;importjava.awt.Graphics;importjava.util.Random;importcn.ming.Main.circle;publicclassCpicextendsPic{publicCpic(Graphicsg){super(g);}publicvoiddrawpic(Graphicsg){g.setColor(Color.RED);circlec1=newcircle();Randomran2=newRandom();inta=ran2.nextInt(150)+10;intb=ran2.nextInt(350)+200;intc=ran2.nextInt(280)+140;c1.settings(a,b,c);g.fillOval(b-a/2,c-a/2,a,a);g.setColor(Color.BLUE);g.fillOval(50+b-a/2,c-a/2-50,a,a);g.setColor(Color.GREEN);g.fillOval(100+b-a/2,c-a/2,a,a);}}packageBridgePattern;importjava.awt.Graphics;publicabstractclassPic{publicGraphicsg;Pic(Graphicsg){this.g=g;}publicabstractvoiddrawpic(Graphicsg);}packageBridgePattern;importjava.awt.Color;importjava.awt.Graphics;importjava.util.Random;importcn.ming.Main.circle;publicclassRpicextendsPic{publicRpic(Graphicsg){super(g);}publicvoiddrawpic(Graphicsg){g.setColor(Color.RED);circlec2=newcircle();Randomran2=newRandom();inta=ran2.nextInt(150)+10;intb=ran2.nextInt(350)+100;intc=ran2.nextInt(150)+100;c2.settings(a,b,