欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新java设计模式之装饰设计模式.docx

    • 资源ID:35278206       资源大小:942.03KB        全文页数:17页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新java设计模式之装饰设计模式.docx

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datejava设计模式之装饰设计模式java设计模式之装饰设计模式装饰设计模式什么是装饰设计模式(Decoration design patterns)呢?当想要对已有的对象进行功能增强时,可以自定义类,将已有对象对象传入,基于已有的功能,并提供加强功能。那么自定义的该类称为装饰类。装饰类通常会通过构造方法接受被装饰的对象。并基于被装饰的对象的功能,提供更强的功能。我们知道IO流中Bufferedwrite()和BufferedReader就是属于装饰类的一种,现在我们通过一个简单程序来看看装饰设计模式的例子:/*以前人们出去都是走路在run方法里描述*/class Personpublic void run()System.out.println("走路");/*现代的人们出去的方式更多了以前的功能需要增强,自定义了一个增强类称为装饰类*/class ModernPersonprivate Person p;ModernPerson(Person p)this.p=p;public void run() /增强方法p.run();System.out.println("自行车");System.out.println("电动车");System.out.println("公交车");class DecorationDesignPatternsDemopublic static void main(String args) Person p=new Person();/p.run();需求不够,被弃用,使用装饰类里的增强型run方法ModernPerson mp=new ModernPerson(p);/将以前Person对象传给装饰类的构造方法mp.run();/增强性run方法。很多人就会疑惑了,我们可以使用继承去实现啊?但是如果使用继承的话,我们来看看继承的使用与装饰类的区别:我们假设一个体系MyReader是父类中的最顶层,父类下面有三个子类MyTxtReader,MyMediaReader,MyDataReader。而这三个类是由于功能上的不足,我们分别继承这三个类来增强功能。MyBufferedTxtReader,MyBufferedMediaReader,MyBufferedDataReader。我们看到一个MyReader体系:MyReader|-MyTxtReader|- MyBufferedTxtReader|- MyMediaReader|- MyBufferedMediaReader|- MyDataReader|- MyBufferedDataReader我们想通过一个类来使用传特定对象的方式,哪部分需要增强我们就传那部分的对象。所以看下面 class MyBufferedReaderMyBufferedReader(MyTxtReader text)MyBufferedReader(MyMediaReader media)MyBufferedReader(MyDataReader data)我们看到上面MyReader因为需求如果又出现了很多的子类,那么就又得在内部改代码,这样麻烦。可以看到上面的这个类扩展性极差。那么我们怎么办呢?我们想到我们何不找一个期参数的共同类型,通过一种多态的形式来提高扩展性。那么我们知道MyReader是父类的顶层,我们把他作为参数类型。class MyBufferedReader extends MyReader()MyBufferedReader(MyReader r);那么我又看到MyReader的体系发生了变化MyReader|-MyTxtReader|- MyMediaReader|- MyDataReader|-MyBufferedReader我们看到装饰模式比继承要灵活的多。避免了继承体系的臃肿。而且降低了类与类之间的关系。我们知道装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强的功能。所以装饰类和被装饰类都属于一个体系中的。其实我所说的就是IO流中体系,我们看看IO流中的装饰设计模式。我在这呢我复写了BufferedReader的readLine方法并继承了Reader类。import java.io.*;class MyBuffered extends Readerprivate Reader fr;MyBuffered(Reader fr)this.fr=fr;/复写了父类的readLinepublic String readLine()throws IOException StringBuilder sb=new StringBuilder();int i=0;while(i=fr.read()!=-1)if(i='r')continue;if(i='n')return sb.toString();elsesb.append(char)i);if(sb.length()!=0)return sb.toString();return null; /父类中的抽象方法必须要写public int read(char cbuf,int off,int len)throws IOExceptionreturn fr.read(cbuf,off,len); /父类中的抽象方法必须要写public void close()throws IOExceptionfr.close();class MyBufferedDemopublic static void main(String args) throws IOExceptionFileReader fr=new FileReader("BufferedWriterDemo.txt");MyBuffered mb=new MyBuffered(fr);String s=null;while(s=mb.readLine()!=null)System.out.println(s);mb.close();-

    注意事项

    本文(最新java设计模式之装饰设计模式.docx)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开