灯泡开关小程序
方法一灯类
//怎么产生灯亮,灯灭的动作
public class Light{
private boolean status = true;
public Event lightOn(){
return new OnEvent();
}public Event lightOff(){
return new OffEvent();}public static void main(String[] args){
Light light = new Light();Event event = light.lightOff();
Controller controller = new Controller();
controller.addEvent(event);
//这样会存在 按几次事件 就会出现多少次 灯亮了 或 灯灭了的问题 // controller.addEvent(event); // controller.addEvent(event); // controller.addEvent(event);
}
}
----------
//事件接口 根据不同的事件 执行不同的逻辑//事件接口 类 Event
public interface Event{
public void execute();}------------
//实现接口public class OnEvent implements Event{ @Override public void execute(){ System.out.println("灯亮了...");}}
----------public class OffEvent implements Event{ @Override public void execute(){ System.out.println("灯灭了...");}}
-------------
//开关的控制 类public class Controller{
public void addEvent(Event event){ event.execute();}}
---------------------------------------------------------------------
方法二解决方法一的问题手段public class Light{
private boolean status = true; //灯亮
public Event lightOn(){
return new Event(){@Override
public void execute(){ if(!status){status = true;
System.out.println("灯亮了...");}}
};
}public Event lightOff(){
return new Event(){ @Override public void execute(){ if(status){ status = false; System.out.println("灯灭了....");}}
};
public static void main(String[] args) {
Light light = new Light(); Event event = light.lightOff(); //指令 Controller controller = new Controller(); controller.addEvent(event); //执行指令}
}
-------------
//开关控制 类
public class Controller {
public void addEvent(Event event){ System.out.println("解析指令,然后执行...."); event.execute(); }}------------------
//事件接口,根据不同的事件,执行不同的逻辑
public interface Event { public void execute();}