黑马程序员技术交流社区
标题:
装饰设计模式
[打印本页]
作者:
晚上没饭吃
时间:
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