package mei.qiu.dianshi;
public interface IControllor { //函数式接口
void open();
//public abstract void open();
}
public abstract class TV {
public abstract void display(IControllor controllor);
}
public class User {
private IControllor controllor;
private TV tv;
public User(IControllor controllor, TV tv){
this.controllor = controllor;
this.tv = tv;
}
public void operate(IControllor controllor, TV tv){
tv.display(controllor);
}
}
public class XiMiTV extends TV{
public void display(IControllor controllor) {
controllor.open();
System.out.println("小米电视打开");
}
}
public class Client {
public static void main(String[] args) {
TV xiaoMiTV = new XiMiTV();
IControllor xiaoMiTVControllor = new RemoteControllor();
User user = new User(xiaoMiTVControllor, xiaoMiTV);
user.operate(xiaoMiTVControllor, xiaoMiTV);
IControllor toyControllor = new ToyControllor();
user.operate(toyControllor, xiaoMiTV);
IControllor rocketCotrollor = new RocketControllor();
user.operate(rocketCotrollor, xiaoMiTV);
}
}
public class RemoteControllor implements IControllor{
public void open(){
System.out.println("按下电视遥控器");
}
}
public class RocketControllor implements IControllor{
public void open() {
System.out.println("按下火箭遥控器");}
}
结果为:
按下电视遥控器
小米电视打开
按下玩具遥控器
小米电视打开
按下火箭遥控器
小米电视打开