今天学习了装饰模式,是我学习java以来碰到的数种模式之一。装饰设计模式是指基于已有对象的功能进行增强,我们可以自定义一个类,将已有的对象传入,在此基础上进行功能增强。那么这个自定义的类成为装饰类。
装饰类通常通过构造函数来接受已有的对象,并基于对象的已有功能进行增强。下面是一个装饰模式的java实例:
class Person
{
public void chifan()
{
System.out.println("吃饭");
}
}
class SuperPerson
{
private Person p;
SuperPerson(Person p)
{
this.p=p;
}
public void superchifan()
{
System.out.println("开胃酒");
p.chifan();
System.out.println("甜点");
System.out.println("来一根");
}
}
public class Zhuangshi {
public static void main(String []args)
{
Person p=new Person();
//p.chifan();
SuperPerson sp=new SuperPerson(p);
sp.superchifan();
}
}
其实io包中的BufferedReader其实就是FileReader的装饰类,BufferedReader提供的功能本质和FileReader是一致的,不过BufferedReader提供的readline()读写功能更为强大,但是话又说回来,readline()方法又是read()方法的装饰方法,两者的本质区别甚微,在io包里的其他类和方法也存在类似的现象。下面这个java实例就包含了BufferedReader和realine()的使用:
import java.io.*;
public class BufferedReaderDemo {
public static void main(String []args)throws IOException
{
FileReader fr=new FileReader("buf.txt");
BufferedReader buf=new BufferedReader(fr);
/*String s1=buf.readLine();
System.out.println(s1);
String s2=buf.readLine();
System.out.println(s2);
buf.close();*/
String line=null;
while((line=buf.readLine())!=null)
{
System.out.println(line);
}
buf.close();
}
}
---------------------- android培训、 java培训、期待与您交流! ----------------------

347

被折叠的 条评论
为什么被折叠?



