package com.mybatis.designpatterns.decorator;
abstract class Component { // 通用的抽象方法類
public abstract void run();
public abstract void swing();
}
package com.mybatis.designpatterns.decorator;
abstract class Decorator extends Component{
protected Component component;
public void setComponent(Component component) {
this.component = component;
}
}
package com.mybatis.designpatterns.decorator;
public class CreateComponentA extends Decorator {
@Override
public void run() {
component.run();
System.out.println("A....再跑步");
}
@Override
public void swing() {
component.swing();
System.out.println("A....再游泳");
}
}
package com.mybatis.designpatterns.decorator;
public class CreateComponentB extends Decorator {
@Override
public void run() {
System.out.println("B....再跑步");
}
@Override
public void swing() {
System.out.println("B....再游泳");
}
}
package com.mybatis.designpatterns.decorator;
public class Main {
public static void main(String[] args) {
CreateComponentA createComponentA = new CreateComponentA();
CreateComponentB createComponentB = new CreateComponentB();
createComponentA.setComponent(createComponentB);
createComponentA.run();
createComponentA.swing();
}
}
console打印信息:
B....再跑步
A....再跑步
B....再游泳
A....再游泳
感受:還是要熟悉運用抽象多態的特點 ,暫時想不出業務中哪裏可以用到這種設計模式