装饰模式 就是给一个类添加其他的功能。这个模式跟代理模式相当的相识。
看代码
1、基础接口
2、要装饰的类
3、装饰类
4、第1个装饰的功能
5、第2个装饰的功能
6、main类
这个模式跟代理模式的不同一个在于结构的设计,一个在于行为的实现。这是本质的差异以后会具体说代理模式。
看代码
1、基础接口
public interface Phone {
public void call();
}
2、要装饰的类
@Override
public void call() {
System.out.println("It's only call");
}
3、装饰类
public abstract class MobileTelephone {
private final Phone phone;
public MobileTelephone(Phone phone) {
this.phone = phone;
}
protected void call() {
phone.call();
}
}
4、第1个装饰的功能
public class MoveFunction extends MobileTelephone {
public MoveFunction(Phone phone) {
super(phone);
}
@Override
protected void call() {
super.call();
System.out.println("It can move");
}
}
5、第2个装饰的功能
public class SMSFunction extends MobileTelephone {
public SMSFunction(Phone phone) {
super(phone);
}
@Override
protected void call() {
super.call();
System.out.println("It can sms");
}
}
6、main类
public class Main {
public static void main(String[] args) {
Phone phone = new FixedTelephone();
phone.call();
MobileTelephone mobileTelephone = new SMSFunction(phone);
mobileTelephone.call();
MobileTelephone moveFunction = new MoveFunction(phone);
moveFunction.call();
}
}
这个模式跟代理模式的不同一个在于结构的设计,一个在于行为的实现。这是本质的差异以后会具体说代理模式。