ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:409.22KB ,
资源ID:9944626      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9944626.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(设计模式课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

设计模式课程设计.docx

1、设计模式课程设计设计模式课程设计题 目: 画 图 程 序 学 院: 信息科学与技术学院 专 业: 学 号: 姓 名: 1需求分析该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。1.1 设计模式要求至少在其中运用 6 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。1.2 画图基本要求能实现基本图形的绘制功能1.3 画图高级要求实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等)和持久化(利用文件或利用数据库)。2.系统设计首先,画图程序可以实现绘制圆形、矩形和按钮,这里可以将圆形、矩形和按钮看作三个不同的类,那么我们可以采用抽象工

2、厂的方式来创建它们。对于画组合图,我们可以采用组合模式将二者结合起来。而对于图形颜色或者粗细的改变,我们可以使用外观模式。然后,我们可以使用原型模式来实现对于最后一个图形的复制。在系统中可以使用代理模式来实现显示图片。下面是对需要用到的设计模式进行的分析。2.1 使用设计模式2.1.1 桥梁模式桥梁模式 , 结构型模式一种 .设计程序过程中 , 会经常使用到抽象类或者接口来完成抽象的过程 。继承或实现的类通过不同的实现方式来完成抽象类或接口的变化 , 也就是实现过程的变化 , 但可能会有这样的情况 , 抽象过程同样需要进行变化 , 也就是抽象类或者接口需要变化 , 这样就会造成原有的继承或实现

3、关系复杂 , 关系混乱 .桥梁模式利用将抽象层和实现层进行解耦 , 使两者不再像继承或实现这样的较强的关系 , 从而使抽象和实现层更加独立的完成变化的过程 . 使系统更加清晰 。桥梁模式主要由抽象类、修正抽象类、实现类以及具体实现类组成 .抽象类 , 制定接口 , 同时给出一个实现化的引用 。修正抽象类 , 扩展抽象类 , 修正或改变抽象类中指定的接口 。实现类 , 提供实现化角色的接口 , 但不进行具体实现过程 , 该接口不一定给出与抽象类相同的接口 , 只是提供实现的方式 。具体实现类 , 完成实现类中定义的实现接口的具体实现过程。具体代码如下:package BridgePattern;

4、import java.awt.Color;import java.awt.Graphics;import java.util.Random;import cn.ming.Main.circle;public class Cpic extends Pic public Cpic(Graphics g) super(g); public void drawpic(Graphics g) g.setColor(Color.RED); circle c1 = new circle(); Random ran2 = new Random(); int a = ran2.nextInt(150)+10;

5、 int b = ran2.nextInt(350)+200; int c = 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); package BridgePattern;import java.awt.Graphics;public abstract class Pi

6、c public Graphics g; Pic(Graphics g) this.g = g; public abstract void drawpic(Graphics g); package BridgePattern;import java.awt.Color;import java.awt.Graphics;import java.util.Random;import cn.ming.Main.circle;public class Rpic extends Pic public Rpic(Graphics g) super(g); public void drawpic(Graph

7、ics g) g.setColor(Color.RED); circle c2 = new circle(); Random ran2 = new Random(); int a = ran2.nextInt(150)+10; int b = ran2.nextInt(350)+100; int c = ran2.nextInt(150)+100; c2.settings(a,b,c); g.fillOval(b-a/2,c-a/2,a,a); g.setColor(Color.BLUE); g.fillOval(b-3*a/8,c-3*a/8,3*a/4,3*a/4); g.setColor

8、(Color.WHITE); g.fillOval(b-a/4,c-a/4,a/2,a/2); g.setColor(Color.GREEN); g.fillOval(b-a/8,c-a/8,a/4,a/4); 运行结果:2.1.2 装饰模式JAVA23种设计模式之一,英文叫Decorator Pattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点;(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象

9、的引用(reference)(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。具体代码如下:package DecoratorPattern;import java.awt.Graphics;import cn.ming.Main.triangles;public class DecoTr extends triangles public triangles t; private

10、Graphics g; public DecoTr() t = new triangles(); public static void filltr(Graphics g,triangles t) if(t != null) t.filltr(g,t); package DecoratorPattern;import java.awt.Color;import java.awt.Graphics;import cn.ming.Main.Triangle;public class DecoTr1 extends DecoTr public static void filltr(Graphics

11、g,Triangle t) g.setColor(Color.GREEN); g.fillOval(t.x-25,t.y-25,50,50); package DecoratorPattern;import java.awt.Color;import java.awt.Graphics;import cn.ming.Main.Triangle;public class DecoTr2 extends DecoTr public static void filltr(Graphics g,Triangle t) g.setColor(Color.RED); g.fillOval(t.x+t.w-

12、25,t.y-25,50,50); 运行结果:2.1.3策略模式策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c+z中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。下面是一个例子。策略模式属于对象行为型模式,主要针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响 到客户端的情况下发生变化。通常,策略模式适用于当一个应用程序需要实现一种特定

13、的服务或者功能,而且该程序有多种实现方式时使用。具体代码实现如下:package StrategyPattern;import java.awt.Graphics;import java.awt.Point;public class policy strategy s; public policy(strategy s) this.s = s; public void choosepolicy(Graphics g,Point p1,Point p2,Point p3) s.drawing(g,p1,p2,p3); package StrategyPattern;import java.awt

14、.Graphics;import java.awt.Point;public abstract class strategy public abstract void drawing(Graphics g,Point p1,Point p2,Point p3);package StrategyPattern;import java.awt.Color;import java.awt.Graphics;import java.awt.Point;public class strategyA extends strategy public Point p1,p2,p3; public double

15、 area,p; public double distenceOfPoints(Point p1, Point p2) return Math.sqrt(p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y); public Point getCircumcenter(Point p1, Point p2, Point p3) double dis12 = distenceOfPoints(p1, p2); double dis23 = distenceOfPoints(p2, p3); double dis31 = diste

16、nceOfPoints(p3, p1); p = dis12 + dis23 + dis31; double pp = p/2; area = Math.sqrt(pp * (pp - dis12) * (pp - dis23) * (pp - dis31); double x = (p1.x * dis23 + p2.x * dis31 + p3.x * dis12) / p; double y = (p1.y * dis23 + p2.y * dis31 + p3.y * dis12) / p; return new Point(int) x, (int) y); public void

17、drawing(Graphics g,Point p1,Point p2,Point p3) /Points p1,Points p2,Points p3 g.drawLine(p1.x,p1.y,p2.x,p2.y); g.drawLine(p2.x,p2.y,p3.x,p3.y); g.drawLine(p3.x,p3.y,p1.x,p1.y); Point center = getCircumcenter(p1, p2, p3); double radius = (2 * area) / p; int x = (int) (center.x - radius); int y = (int

18、) (center.y - radius); int width = (int) (radius * 2); g.setColor(Color.BLUE); g.fillOval(x, y, width, width); package StrategyPattern;import java.awt.Color;import java.awt.Graphics;import java.awt.Point;public class strategyB extends strategy public Point p1,p2,p3; public Point getCircumcenter(Poin

19、t p1, Point p2, Point p3) double a = 2 * (p2.x - p1.x); double b = 2 * (p2.y - p1.y); double dp1=p1.x * p1.x + p1.y * p1.y; double dp2=p2.x * p2.x + p2.y * p2.y; double dp3=p3.x * p3.x + p3.y * p3.y; double c = dp2- dp1; double d = 2 * (p3.x - p2.x); double e = 2 * (p3.y - p2.y); double f = dp3-dp2;

20、 double x = (b * f - e * c) / (b * d - e * a); double y = (d * c - a * f) / (b * d - e * a); return new Point(int) x, (int) y); public void drawing(Graphics g,Point p1,Point p2,Point p3) g.drawLine(p1.x,p1.y,p2.x,p2.y); g.drawLine(p2.x,p2.y,p3.x,p3.y); g.drawLine(p3.x,p3.y,p1.x,p1.y); Point center =

21、 getCircumcenter(p1, p2, p3); double radius = center.distance(p1); int x = (int) (center.x - radius); int y = (int) (center.y - radius); int width = (int) (radius * 2); g.setColor(Color.red); g.drawOval(x, y, width, width); 运行结果:2.2 画图功能分析2.2.1 画一个图形当选定画一个图形后,由外观模式确定画图的类型,并且得到一个具体的圆形类、矩形类或按钮类的对象。由鼠标

22、按下的点确定圆形对象的圆心或者矩形和按钮对象的起始点,鼠标起来的点和按下点的关系确定圆形对象的半径或者矩形和按钮对象的长度和宽度。然后将该对象的所有信息包括上面所述的信息和图形类型、画笔颜色和画笔宽度设置好了后,加入享元类中。2.2.2 画组合图2.2.3 选中图形关于选中图形,采用遍历享元的方式,考虑到一般情况先前一个图的区域会被后面所画的图区域覆盖,那么我们从享元的后面开始遍历,当鼠标按下的点位于某个对象区域之中时,改变其颜色,并且提供移动其位置的功能。当选中一个图形时,可以使用加装饰或者减装饰的功能,还可以提供放大和缩小的功能。当选择了选取功能时,就不能画图了,当我们选择“取消选取”后,

23、取消了关于选取图形的操作,又可以画图了。2.2.4 加、减装饰首先,你需要确定装饰的图形(对象)是哪个,需要选取那个图形。当选好需要对那个图形后,创建装饰类的对象,然后给选定的对象加或者减装饰。在该系统中,加、减装饰是对于画笔大小的操作,如果是加装饰那么就一个增加画笔的大小,否则减小画笔的大小到最小就不能减小了。2.2.5 复制最后shape复制最后一个图形我们可以采用原型模式。在使用原型模式的时候要注意使用的是深拷贝,如果是浅拷贝,那么当将新的复制后的对象加入到享元后,其实是一个对象的两个副本,就不会显示出使用原型模式的特点。当然,我们需要依据类型来赋值返回具体的图形。3.心得体会设计模式(

24、Design pattern):是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式的种类很多,包括分布式编程模式、用户界面模式、数据模型模式三大类。目前流行的面向对象设计模式,仅1995年“gang of four” 描述的就有二十多种,称之为GoF模式;与GoF模式相对应的是通用责任分配软件系列模式GRASP。GRASP模式着重考虑设计类的原则及如何分配类的功能,而GoF模式则着重考虑设计的实现、类的交互及软件质量。可以说,GoF模式就是符合GRASP模式要求的面向对象设计模式。设计模式的作用:(

25、1)重用设计,它比简单的重用代码更有意义;(2)为设计提供共同的词汇,每个模式名就是一个设计词汇,其概念使得程序员间的交流更加方便;(3)在开发文档中采用设计模式词汇可以让其他人更任意理解你的想法,理解为什么你会这么做,你都做了些什么。编写开发文档也更加任意;(4)应用设计模式可以让重构系统变得容易,可确保开发正确的代码,并降低在设计或实现中出错误的可能性;(5)可以节省大量时间。 下面是赠送的广告宣传方案不需要的朋友可以下载后编辑删除! 广告宣传方案每个人在日常生活中都有意、无意的接受着广告的洗礼,继而有意或无意的购买、使用广告中的产品和服务。这是每个厂家所希望的,也是他们做广告的初衷。当今

26、社会的广告媒体大致分为:电视媒体、电台媒体、报纸报刊媒体、网站媒体、户外广告媒体,以及最新的网吧桌面媒体。那么,到底哪种媒体的宣传效果性价比最高呢,我们来做个分析;首先我们大概了解下各个媒体的宣传方式:电视媒体:优势:将广告直接插播在电视剧当中,是强迫式使受众接受,受众为了能够完整的看完自己所喜欢的节目,不得不浏览其中插播的广告,其二,由于小孩在懵懂的成长时期,易于接受颜色绚丽,变换节奏快的事物,电视广告更容易被小孩子所接受,这是电视广告的高明之处,也是其客户多,利润大的主要原因。劣势:随着网络的发展,以及年轻人的生活方式的改变,电视广告的优势在日益削减。当今月来越多的年轻人开始接受速食文化,

27、篇幅过长的电视连续剧的受众逐渐衰减,由于年轻人的思维快捷,逐渐掌握了电视广告的播出时间,往往在广告播出的时间转换频道,避开广告的冲击。电台媒体和户外广告就不用多做分析,大家想想你记住了几个电台的广告,记住了几个路边的广告就清楚了。对于报纸报刊的广告,相信只有那些闲了没事的或者找工作的才会刻意去浏览广告。宣传效果可以想象。至于网站的广告,相信很多人会在电脑上设置软件直接将其屏蔽掉。网站的广告过多也会直接影响到受众的心理,进而降低其网站的竞争力。其次我们大致由高到低排列一下以上媒体的广告费用的名次(受众派名基本和费用排名一致):电视媒体户外广告网站媒体报纸报刊媒体电台媒体最后来了解一下最新的网吧桌

28、面媒体。桌面广告的优势1、目标受众群体针对性强网吧媒体的受众主要是年轻一代,接受其信息的多为在校学生(大学生居多)和有一定经济收入的白领阶层,其主要特征是消费观和价值观趋于统一,追求时尚,消费能力集中,且具有很强的消费欲望,界定在感性消费,而非理性消费群体范畴。选择网吧广告可以帮您直接命中最有可能的潜在用户。2、100% 的广告有效送达率网吧电脑显示屏广告位基于对网吧的上网环境及网民上网习惯的充分调研而设置。电脑显示屏广告界面是网民登陆后默认当前界面,任何网民,无论其上网聊天或玩游戏均能 100% 看到电脑显示屏中的客户广告。3、受众数量更加巨大目标受众规模大,通过对全国大中城市的网吧进行抽样

29、调查,据统计,每台网吧电脑每天的使用人次为46人,在节假日和周末还有30左右的增长。一万台网吧电脑,每天的用户数量即为4万6万,一个月的累计用户数量即为120万180万人次,也就是说网吧广告的受众为 120 万 180万人次/万台/月,这样的规模是目前任何专业类媒体都无法比拟的。4、更加有效的广告记忆的强制性、反复性、抗干扰性我们在制作广告画面时要求一个桌面上同时最多只能发布三至四个不同品牌的广告宣传,这样品牌之间的干扰度低,更有利于广告信息的传播;网吧广告是在其内上网者登录网络后必然显示在桌面和浏览器上的,它强制上网者接受广告信息;通过上述两方面因素的结合,最终让目标受众产生有效的广告记忆力

30、。5、全天候宣传媒体目前网吧规定营业时间是早 8 点至晚 12 点,实际上绝大部分网吧是 24 小时营业,网吧媒体成为名副其实的全天候媒体。6、广告发布方式更加灵活客户可以根据具体的情况及需求安排投放范围及区域,最大限度地保证投放的灵活性,广告发布可采用网络广告的所有形式;并保证在合同签署后短时间内发布广告和根据客户要求实时更新广告,保证广告发布的及时性和有效性。7、投放效果评估更加真实每一个客户投放的网吧,我们都将提供详细的网吧资料(网吧名称,终端电脑台数等),客户对于自己投放广告的范围及覆盖人群数量有非常真实和精确的掌控。显示屏广告位的设置方法使得广告的发布也更加直观有效,结合网络技术手段可对广告投放效果进行及时有效的分析评估。8、视觉冲击力超强精美宽大幅面的广告画面及详细的文字说明,与目标受众近似零距离的视觉接触,具强烈的冲击力,可充分展示品牌形象和产品特性,给受众留下极其深刻的印象。另外,可以充分利用多媒体、超文本格式文件,设置多种形式让受众对其感兴趣的产品了解更为详细的信息,使消费者能亲身体验产品、

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1