黑马程序员_装饰模式

---------------------- android培训java培训、期待与您交流! ---------------------- 

 

今天学习了装饰模式,是我学习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培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值