文件复制程序:

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

 

代码示例:

装饰设计模式和例题_设计模式



统计连续的重复字节:

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

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

 

代码示例:

装饰设计模式和例题_设计模式_02


运行结果:

装饰设计模式和例题_设计模式_03




装饰设计模式:

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

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

代码示例:

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

装饰设计模式和例题_装饰_04



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

代码示例:

装饰设计模式和例题_设计模式_05



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

代码示例:

装饰设计模式和例题_装饰_06



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

  代码示例:

装饰设计模式和例题_装饰_07



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

  代码示例:

装饰设计模式和例题_装饰_08


运行结果:

装饰设计模式和例题_设计模式_09


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

装饰设计模式和例题_设计模式_10


运行结果:

装饰设计模式和例题_装饰_11


可以增加任意个对象:

装饰设计模式和例题_装饰_12


运行结果:

装饰设计模式和例题_设计模式_13


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

装饰设计模式和例题_设计模式_14


运行结果:

装饰设计模式和例题_设计模式_15



写信的例题:

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

装饰设计模式和例题_装饰_16


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

装饰设计模式和例题_设计模式_17


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

装饰设计模式和例题_装饰_18


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

装饰设计模式和例题_设计模式_19


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

装饰设计模式和例题_装饰_20


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

装饰设计模式和例题_装饰_21



运行结果:

装饰设计模式和例题_设计模式_22