设计模式课程设计Word文件下载.docx
- 文档编号:14654557
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:15
- 大小:409.28KB
设计模式课程设计Word文件下载.docx
《设计模式课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《设计模式课程设计Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
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);
}
}
publicabstractclassPic
{
publicGraphicsg;
Pic(Graphicsg){
this.g=g;
publicabstractvoiddrawpic(Graphicsg);
publicclassRpicextendsPic
{
publicRpic(Graphicsg){
circlec2=newcircle();
intb=ran2.nextInt(350)+100;
intc=ran2.nextInt(150)+100;
c2.settings(a,b,c);
g.fillOval(b-3*a/8,c-3*a/8,3*a/4,3*a/4);
g.setColor(Color.WHITE);
g.fillOval(b-a/4,c-a/4,a/2,a/2);
g.fillOval(b-a/8,c-a/8,a/4,a/4);
运行结果:
2.1.2装饰模式
JAVA23种设计模式之一,英文叫DecoratorPattern,又叫装饰者模式。
装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。
它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
装饰模式的特点;
(1)装饰对象和真实对象有相同的接口。
这样客户端对象就可以和真实对象相同的方式和装饰对象交互。
(2)装饰对象包含一个真实对象的引用(reference)
(3)装饰对象接受所有来自客户端的请求。
它把这些请求转发给真实的对象。
(4)装饰对象可以在转发这些请求以前或以后增加一些附加功能。
这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。
在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。
packageDecoratorPattern;
importcn.ming.Main.triangles;
publicclassDecoTrextendstriangles
publictrianglest;
privateGraphicsg;
publicDecoTr(){
t=newtriangles();
publicstaticvoidfilltr(Graphicsg,trianglest){
if(t!
=null)
t.filltr(g,t);
importcn.ming.Main.Triangle;
publicclassDecoTr1extendsDecoTr
publicstaticvoidfilltr(Graphicsg,Trianglet){
g.fillOval(t.x-25,t.y-25,50,50);
publicclassDecoTr2extendsDecoTr
g.fillOval(t.x+t.w-25,t.y-25,50,50);
2.1.3策略模式
策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。
下面是一个例子。
策略模式属于对象行为型模式,主要针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。
策略模式使得算法可以在不影响到客户端的情况下发生变化。
通常,策略模式适用于当一个应用程序需要实现一种特定的服务或者功能,而且该程序有多种实现方式时使用。
具体代码实现如下:
packageStrategyPattern;
importjava.awt.Point;
publicclasspolicy
strategys;
publicpolicy(strategys){
this.s=s;
publicvoidchoosepolicy(Graphicsg,Pointp1,Pointp2,Pointp3){
s.drawing(g,p1,p2,p3);
}
publicabstractclassstrategy
publicabstractvoiddrawing(Graphicsg,Pointp1,Pointp2,Pointp3);
publicclassstrategyAextendsstrategy
publicPointp1,p2,p3;
publicdoublearea,p;
publicdoubledistenceOfPoints(Pointp1,Pointp2){
returnMath.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
publicPointgetCircumcenter(Pointp1,Pointp2,Pointp3){
doubledis12=distenceOfPoints(p1,p2);
doubledis23=distenceOfPoints(p2,p3);
doubledis31=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 课程设计