-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
装饰设计模式:
当想要对已有的对象进行功能增强时,可以定义类,将已有对象转入,基于已有的功能,并提供加强功能。那么自定义的类称为装饰类。例如:readline()方法,其实就是包装了read()方法,是它原来只读一个字节的功能得到加强,所以readline()就是一个装饰类,调用的是read()方法。
装饰模式类似于类的继承,装饰类就相当于类的继承中的子类,而增强功能所调用的方法的所在类就相当于类的继承中的父类。子类可以调用父类的方法。然而装饰模式和类的继承还是有明显的区别。装饰类更加灵活些,他可以对已有的类进行随意的组合,但类的继承就不可以,他是一种静态行为,无法改变。另外装饰对象和真实对象具有相同的接口,否则的话客户端对象不能以真实对象相同的方式和装饰对象互换。装饰模式和类的继承还有一个区别装饰模式扩展的是对象的功能,而类的继承扩展的是类的功能。
装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的功能提供更强的功能。
案例:
package test;
public class test04 {
/**
* @param args
*/
public static void main(String[] args){
Personp = new Person();
SuperPersonsp = new SuperPerson(p);
sp.superChifan();
System.out.println("qqqqq");
}
}
class Person {
public void chifan(){
System.out.println("吃饭");
}
}
class SuperPerson{
private Person p;
SuperPerson(Personp){
this.p = p;
}
public void superChifan(){
System.out.println("开胃菜");
p.chifan();
System.out.println("水果");
}
}