黑马程序员技术交流社区

标题: 装饰设计模式 [打印本页]

作者: 晚上没饭吃    时间: 2015-8-7 00:12
标题: 装饰设计模式
装饰模式就是使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类。是继承的替代方案

优点: 使用装饰模式,是可以提供比继承更灵活的扩展对象的功能,它可以动态的添加对象的功能,并且可以随意的组合这些功能。

缺点:正因为可以随意组合,所以就可能出现一些不合理的逻辑

通过一个案例来说明这个方法
//定义一个接口手机类
public interface Phone {
     public abstract void call();
}
//实现这个接口
public class PhoneDemo implements Phone {
     @Override
     public void call() {
            // TODO Auto-generated method stub
           System. out.println( "可以打电话了" );
     }
}
//添加装饰功能
public class PhoneOrnament implements Phone{
     private Phone p;
       public PhoneOrnament(Phone p){
             this. p=p;
       }
     @Override
     public void call() {
            // TODO Auto-generated method stub
            this. p.call();
     }

}
//添加装饰
public class RingDemo extends PhoneOrnament{

     public RingDemo(Phone p) {
            super(p);
     }
     public void call(){
           System. out.println( "手机可以听彩铃" );
            super.call();
     }
}
//测试
public class PhoneTest {
     public static void main(String[] args) {
           Phone p= new PhoneDemo();
            new RingDemo(p).call();
     }
}
如果看懂了这个再去看IO流的BufferedInputStream(new  FileInputStream(System.in));你发现这是一个装饰设计模式
作者: fantianfei    时间: 2015-8-7 08:24
看到后面,前面就忘记了,。。
作者: 王竹根    时间: 2015-8-7 09:16
感觉看不懂的样子。。。。。。。。
作者: Demon浣熊    时间: 2015-8-7 09:56
就是普通的调用函数。什么意思?
作者: 修道解厄    时间: 2015-8-7 23:25
IO流中的包装类
作者: 袁月明    时间: 2015-8-8 00:06
设计模式,今天刚学




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2