代码如下:
接口:
package com.qimh.springbootfiledemo.designmodel;
public interface Phone {
void call();
}
抽象类:
package com.qimh.springbootfiledemo.designmodel;
/**
* @author
*/
public abstract class PhoneDecorate implements Phone {
private Phone phone;
public PhoneDecorate(Phone phone){
this.phone = phone;
}
@Override
public void call() {
phone.call();
}
}
目标类:
package com.qimh.springbootfiledemo.designmodel;
/**
* @author
*/
public class IPhoneX implements Phone {
@Override
public void call() {
System.out.println("打电话");
}
}
增加类1:
package com.qimh.springbootfiledemo.designmodel;
/**
* @author
*/
public class MusicDecorate extends PhoneDecorate {
public MusicDecorate(Phone phone) {
super(phone);
}
public void listenMusic(){
System.out.println("听音乐");
}
@Override
public void call() {
listenMusic();
super.call();
}
}
增强类2:
package com.qimh.springbootfiledemo.designmodel;
/**
* @author
*/
public class GiveCurrentTimeDecorate extends PhoneDecorate {
public GiveCurrentTimeDecorate(Phone phone) {
super(phone);
}
public void currentTime(){
System.out.println("当前时间:" + System.currentTimeMillis());
};
@Override
public void call() {
super.call();
currentTime();
}
}
main 方法:
package com.qimh.springbootfiledemo.designmodel;
import javax.xml.ws.Holder;
/**
* @author
*/
public class Main {
public static void main(String[] args){
Phone phone = new IPhoneX();
phone = new MusicDecorate(phone);
phone = new GiveCurrentTimeDecorate(phone);
phone.call();
}
}
运行结果:
听音乐
打电话
当前时间:1586855900928