public class Client {
public static void main(String[] args) {
Phone phone = new SimplePhone();
phone.action();
System.out.println("--");
Phone jarPhone = new JarPhone(phone);
jarPhone.action();
System.out.println("--");
Phone complexPhone =new ComplexPhone(jarPhone);
complexPhone.action();
}
}
public interface Phone {
void action();
}
public class SimplePhone implements Phone {
public SimplePhone() {
System.out.println("普通手机");
}
private void sound() {
System.out.println("发出声音");
}
@Override
public void action() {
this.sound();
}
}
public class Upgrade implements Phone{
private Phone phone;
public Upgrade(Phone phone){
this.phone = phone;
}
@Override
public void action() {
phone.action();
}
}
public class JarPhone extends Upgrade {
public JarPhone(Phone phone){
super(phone);
System.out.println("能振动的手机");
}
private void jar(){
System.out.println("震动");
}
@Override
public void action() {
super.action();
this.jar();
}
}
public class ComplexPhone extends Upgrade {
public ComplexPhone(Phone phone) {
super(phone);
System.out.println("能振动及闪光的手机");
}
private void light(){
System.out.println("发光");
}
@Override
public void action() {
super.action();
this.light();
}
}