A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

24黑马币
举个好点的例子说,一定要详细。没见解的不要。

最佳答案

查看完整内容

学过StringBuffer吧,StringBuffer使用在创建对象的时候你是咋做的啊? 这样StringBuffer sb=new StringBuffer(new FileWriter(file)); 这里的StringBuffer不是就是一个装饰类么?原来的FileWriter没有缓冲功能,装饰后有了。 我们上课的例子: public interface Phone { public abstract void call(); } public class PhoneImpl implements Phone { @Override public void call() { System.out.println("用手机打电话"); ...

4 个回复

倒序浏览
学过StringBuffer吧,StringBuffer使用在创建对象的时候你是咋做的啊?
这样StringBuffer sb=new StringBuffer(new FileWriter(file));
这里的StringBuffer不是就是一个装饰类么?原来的FileWriter没有缓冲功能,装饰后有了。
我们上课的例子:
public interface Phone {
        public abstract void call();
}

public class PhoneImpl implements Phone {

        @Override
        public void call() {
                System.out.println("用手机打电话");
        }

}

public abstract class PhoneDecorate implements Phone {

        private Phone phone;

        public PhoneDecorate(Phone phone) {
                this.phone = phone;
        }

        @Override
        public void call() {
                this.phone.call();
        }
}

public class ColorPhoneDecorate extends PhoneDecorate {

        public ColorPhoneDecorate(Phone phone) {
                super(phone);
        }

        @Override
        public void call() {
                System.out.println("播放彩铃");
                super.call();
        }
}

public class GuangGaoPhoneDecorate extends PhoneDecorate {

        public GuangGaoPhoneDecorate(Phone phone) {
                super(phone);
        }

        @Override
        public void call() {
                super.call();
                System.out.println("播放广告");
        }
}

public class PhoneTest {
        public static void main(String[] args) {
                Phone p = new PhoneImpl();
                p.call();
                System.out.println("---------------");

                PhoneDecorate pd = new ColorPhoneDecorate(p);
                pd.call();
                System.out.println("---------------");

                pd = new GuangGaoPhoneDecorate(p);
                pd.call();
                System.out.println("---------------");

ColorPhoneDecorate cc =new ColorPhoneDecorate(p);
                pd = new GuangGaoPhoneDecorate(cc);
                pd.call();
        }

说直白点,装饰类就是接收对象,添加功能。这个例子里面就是装饰类在哪儿放着,你要装饰啥,扔进去,
装好了new装饰类,新的就出来了。ok
}
回复 使用道具 举报
浑水摸鱼的不要来
回复 使用道具 举报
小手一抖,积分到手
回复 使用道具 举报
BufferedReader,BufferedWriter就是个例子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马