装饰者模式:在原有类的基础上添加增强功能
//人接口
interface Human {
void run();
void walk();
}
//被装饰类Man
class Man implements Human {
@Override
public void run() {
System.out.println("man can run");
}
@Override
public void walk() {
System.out.println("man can walk");
}
}
//装饰抽象类
abstract class AbstractDecorate implements Human {
Human human;//human引用
public AbstractDecorate(Human human) {
this.human = human;
}
@Override
public void run() {
human.run();
}
@Override
public void walk() {
human.walk();
}
}
//Man抽象装饰实现类
class ManDecorate extends AbstractDecorate {
public ManDecorate(Human human) {
super(human);
}
//装饰着增强功能
public void speak() {
System.out.println("man can speak");
}
//装饰着增强功能
public void work(){
System.out.println("man can work");
}
@Override
public void run() {
super.run();
speak();//调用增强功能
}
@Override
public void walk() {
super.walk();
work();//调用增强功能
}
}
//客户端代码
class Client{
public static void main(String[] args) {
Human man = new Man();//实现有参构造使用接口引用
ManDecorate manDecorate = new ManDecorate(man);
//调用增强类的方法
manDecorate.run();
manDecorate.walk();
}
}
参考博文:https://blog.csdn.net/pihailailou/article/details/82813374