关于包装类包装之后,对象生成顺序
package pku.ss.caoning.ipctest.decoratorTest;
public abstract class AbstractDecorator implements Parent {
private Parent object;
public AbstractDecorator(Parent object){
this.object=object;
}
public void print() {
// TODO Auto-generated method stub
System.out.println("Decorator");
}
private Parent object;
public AbstractDecorator(Parent object){
this.object=object;
}
public void print() {
// TODO Auto-generated method stub
System.out.println("Decorator");
}
}
package pku.ss.caoning.ipctest.decoratorTest;
public class ConcreteClass implements Parent {
public ConcreteClass(){
System.out.println("ConcreteClass");
}
public void print() {
// TODO Auto-generated method stub
}
public ConcreteClass(){
System.out.println("ConcreteClass");
}
public void print() {
// TODO Auto-generated method stub
}
}
package pku.ss.caoning.ipctest.decoratorTest;
public class ConcreteDecorator1 extends AbstractDecorator {
public ConcreteDecorator1(Parent object) {
super(object);
// TODO Auto-generated constructor stub
System.out.println("ConcreteDecorator1");
}
super(object);
// TODO Auto-generated constructor stub
System.out.println("ConcreteDecorator1");
}
}
package pku.ss.caoning.ipctest.decoratorTest;
public class ConcreteDecorator2 extends AbstractDecorator {
public ConcreteDecorator2(Parent object) {
super(object);
// TODO Auto-generated constructor stub
System.out.println("ConcreteDecorator2");
}
super(object);
// TODO Auto-generated constructor stub
System.out.println("ConcreteDecorator2");
}
}
package pku.ss.caoning.ipctest.decoratorTest;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new ConcreteDecorator2(new ConcreteDecorator1(new ConcreteClass()));
}
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new ConcreteDecorator2(new ConcreteDecorator1(new ConcreteClass()));
}
}
package pku.ss.caoning.ipctest.decoratorTest;
public interface Parent {
public void print();
}
}
结果是:
ConcreteClass
ConcreteDecorator1
ConcreteDecorator2
ConcreteDecorator1
ConcreteDecorator2
可以看出来
new ConcreteDecorator2(new ConcreteDecorator1(new ConcreteClass()));的生成顺序是从内而外