代码
Component
public abstract class Component {
public String FilePath;
public abstract String operation();}
ConcreteComponent
public class ConcreteComponent extends Component{
public ConcreteComponent(String FilePath) {
this.FilePath = FilePath;
// TODO Auto-generated constructor stub
}
Decorator
public abstract class Decorator extends Component {
public Component c;
public Decorator(Component c) {
// TODO Auto-generated constructor stub
this.c = c;
}
@Override
public String operation() {
// TODO Auto-generated method stub
return "";
}
}
Bugfix
public class bugfix extends Decorator {
public bugfix(Component c) {
// TODO Auto-generated constructor stub
super(c);
}
public String operation()
{
String done = super.operation();
//to do here
return done + "bugfix";
}
}
BankEnhanced
public class BankEnhanced extends Decorator{
public BankEnhanced(Component c) {
// TODO Auto-generated constructor stub
super(c);
}
public String operation()
{
String done = super.operation();
//todo here
return done + "enhanced";
}
}
main
String strFilePath = txtFilePath.getText();
Component c = new ConcreteComponent(strFilePath);
Decorator d = new bugfix(c);
if(chkBankEnhanced.isSelected())
{
System.out.println("Enhanced");
Decorator d = new BankEnhanced(d);
}
d.operation();
当chkBankEnhanced.isSelected()true,d.c.FilePath 就是null.
我没看出来哪里有问题,谢谢大家指教了,谢谢。
包裹形式是
c = new bugfix(c);