前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >装饰设计模式和例题

装饰设计模式和例题

作者头像
端碗吹水
发布2020-09-23 10:24:26
3060
发布2020-09-23 10:24:26
举报
文章被收录于专栏:程序猿的大杂烩

文件复制程序:

将一个文件复制一份出来,实现方法很简单,使用FileInputStream读取文件内容,然后使用FileOutputStream写入另一个文件,利用read方法的返回值作为while循环的条件,进行一边读一边写。

代码示例:

c52fe6c2bab188bc0b7574fcb50ed967.png
c52fe6c2bab188bc0b7574fcb50ed967.png

统计连续的重复字节:

将连续5个以上重复的字节统计一下,并且将重复的数量和所有重复字节的总数量打印出来。

实现这个程序,主要思路是单个字节的读取,每读取一个字节就记录下来,然后和下一次读取的字节进行对比比否相等,相等代表重复。就再用一个count变量记录重复的次数,如果不相等就代表不重复就需要把这个变量归零重新记录。还需要一个total变量来记录每次重复的次数总和,只需要加个判断条件,只要count大于等于5就令total+=count即可。

代码示例:

b1bc1e02bc7642ebfc95c4ed42352475.png
b1bc1e02bc7642ebfc95c4ed42352475.png

运行结果:

f29e6b014f9182ca7c5f364fbffe4feb.png
f29e6b014f9182ca7c5f364fbffe4feb.png

装饰设计模式:

装饰设计模式,顾名思义就是给某样东西、某个对象进行装饰。装饰设计模式可以利用继承或实现接口的方式,给一个基础的对象增加新的功能,就像一个毛坯房,可以通过装修之后变成漂亮的房子,有点类似于能够进行功能上的叠加。

下面以蛋糕为主题进行一个装饰设计模式的过程:

代码示例:

先使用一个接口定制好方法:

98e194bc72cf1e08dd8ec143770bc050.png
98e194bc72cf1e08dd8ec143770bc050.png

然后写一个最基础的类,在蛋糕里最基础的类就是普通蛋糕了,在这个类里需要实现接口。

代码示例:

ff7eb5faef3f65ccbb13f81b74f6cf94.png
ff7eb5faef3f65ccbb13f81b74f6cf94.png

接着就是其他可以以蛋糕这个类为基础扩展的类,例如草莓蛋糕:

代码示例:

b4a9bcac5cf144345b4fbfc592f74716.png
b4a9bcac5cf144345b4fbfc592f74716.png

愿意的话可以写任意个这样的类,但是基本规则都是一样:

  代码示例:

1339edec74551d6ab92005fade0cd7f5.png
1339edec74551d6ab92005fade0cd7f5.png

体系写完后,可以使用测试类测试效果:

  代码示例:

4ad92b9b49876092b46d2d6ef41adfed.png
4ad92b9b49876092b46d2d6ef41adfed.png

运行结果:

8ccfcf2af2235c713659c6c4c827e246.png
8ccfcf2af2235c713659c6c4c827e246.png

再增加(装饰)一个对象:

0ff230f3cc409e22605c05c08e1435d7.png
0ff230f3cc409e22605c05c08e1435d7.png

运行结果:

c18b088031f579cb55485bfb5788e027.png
c18b088031f579cb55485bfb5788e027.png

可以增加任意个对象:

787ad5f32694d4530bdc4db1d5149247.png
787ad5f32694d4530bdc4db1d5149247.png

运行结果:

dec0b714a4b58f6a23e5337e5f78b090.png
dec0b714a4b58f6a23e5337e5f78b090.png

也可以只使用基础类对象:

03546f7efcb029f5ca56416f83538b14.png
03546f7efcb029f5ca56416f83538b14.png

运行结果:

88e620728806f56100c6b80019b891dd.png
88e620728806f56100c6b80019b891dd.png

写信的例题:

  也是同样先定义一个接口或者抽象类:

b5fe8b1be9c5882c17f33265abe39e31.png
b5fe8b1be9c5882c17f33265abe39e31.png

然后再定义一个基础实现类:

679bd6669b1b660b373847634f5c0d47.png
679bd6669b1b660b373847634f5c0d47.png

有些人喜欢在信件上喷点香水,所以可以写一个香水的扩展类:

1847fc589950f673738f34f3f07b7737.png
1847fc589950f673738f34f3f07b7737.png

如果写的是情书,或许还需要一个吻印,那么就可以写一个吻印的扩展类:

b1315ed96fc72bced06729f4ee006a9e.png
b1315ed96fc72bced06729f4ee006a9e.png

既然有吻印,自然得再加上几个爱心桃,来给对方表达爱慕,那么就再写一个爱心的扩展类:

25c3787aceaf2f40c272686d3f713dd0.png
25c3787aceaf2f40c272686d3f713dd0.png

完成后就可以在测试类里进行测试查看效果:

13ff3566d8991880efb23a58821cf0e2.png
13ff3566d8991880efb23a58821cf0e2.png

运行结果:

813bde370d917577319fc111785b7066.png
813bde370d917577319fc111785b7066.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/10/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档