灯泡开关小程序

灯泡开关小程序
方法一

灯类

//怎么产生灯亮,灯灭的动作

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();
}

转载于:https://my.oschina.net/u/2542711/blog/540735

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值