资源描述:
《设计模式课程设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、设计模式课程设计题目:画图程序学院:信息科学与技术学院专业:软件工程学号:20092384姓名:陈志otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialC
2、ommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand1.需求分析该系统是一个画图程序,我们要用设计模式的
3、思想来设计系统结构,然后实现基本图形的绘制功能。1.1设计模式要求至少在其中运用6种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。1.2画图基本要求能实现基本图形的绘制功能1.3画图高级要求实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等)和持久化(利用文件或利用数据库)。2.系统设计首先,画图程序可以实现绘制圆形、矩形和按钮,这里可以将圆形、矩形和按钮看作三个不同的类,那么我们可以采用抽象工厂的方式来创建它们。对于画组合图,我们可以采用组合模式将二者结合起来。而对于图形颜色或者粗细的改
4、变,我们可以使用外观模式。然后,我们可以使用原型模式来实现对于最后一个图形的复制。在系统中可以使用代理模式来实现显示图片。下面是对需要用到的设计模式进行的分析。2.1使用设计模式2.1.1桥梁模式桥梁模式,结构型模式一种.设计程序过程中,会经常使用到抽象类或者接口来完成抽象的过程。继承或实现的类通过不同的实现方式来完成抽象类或接口的变化,也就是实现过程的变化,但可能会有这样的情况,抽象过程同样需要进行变化,也就是抽象类或者接口需要变化,这样就会造成原有的继承或实现关系复杂,关系混乱.桥梁模式利用将抽象层和实现层进
5、行解耦,使两者不再像继承或实现这样的较强的关系,从而使抽象和实现层更加独立的完成变化的过程.使系统更加清晰。桥梁模式主要由抽象类、修正抽象类、实现类以及具体实现类组成.抽象类,制定接口,同时给出一个实现化的引用。修正抽象类,扩展抽象类,修正或改变抽象类中指定的接口。实现类,提供实现化角色的接口,但不进行具体实现过程,该接口不一定给出与抽象类相同的接口,只是提供实现的方式。具体实现类,完成实现类中定义的实现接口的具体实现过程。具体代码如下:packageBridgePattern;importjava.awt.Co
6、lor;importjava.awt.Graphics;otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictor
7、yofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersandimportjava.util.Random;importcn.ming.Main.circle
8、;publicclassCpicextendsPic{publicCpic(Graphicsg){super(g);}publicvoiddrawpic(Graphicsg){g.setColor(Color.RED);circlec1=newcircle();Randomran2=newRandom();inta=ran2.nextInt(150)+10;intb=ra