• 坏了,我写不出来面向过程的代码了 -- 面向对象之订单状态改变的设计


    class Order {
    
    	@Autowire
    	OrderStatusActionRegister orderStatusActionRegister;
    		
    	void changeStatus(toStatus) {
    		
    		foreach(Action action : orderStatusActionRegister.getActions(toStatus)) {
    			action.execute();
    		}
    	}
    }
    
    interface Action {
    	
    	void execute();
    }
    
    class OrderStatusActionRegister {
    
    	Map<String, List> statusActionsMap = new HashMap<String, ArrayList>();	
    	
    	public void regitstr(status, action) {
    		
    		if(statusActionsMap.get(status) == null) {
    			statusActionsMap.put(status, new ArrayList());
    		}
    		statusActionsMap.get(status).add(action);
    	}	
    
    	public void deregitstr() {
    	
    		...
    	}
    
    	public List getActions(status) {
    	
    		return statusActionsMap.get(status);
    	}
    }
    
    // 新增发货动作
    class SendAction implement Action {
    	
    	void execute() {
    		
    		syso('业务逻辑-皓哥,我发货了,请嫂子查收');
    	}
    }
    
    class SendActionRegister {
    
    	@Autowire
    	OrderStatusActionRegister register;
    
    	register.regitstr("发货", new SendAction());
    }

    虽然我不是高手,但我愿和你方便的交流。 QQ:370298543

      

  • 相关阅读:
    希尔排序之C++实现(初级版)
    CF9D How many trees?
    IOI2015 boxes纪念品盒
    CSP-S 2019图论总结
    数据生成器
    Special-Judge模板
    CF293B Distinct Paths
    浅谈几种常见的剪枝方式
    CF620E New Year Tree
    浅谈DFS序
  • 原文地址:https://www.cnblogs.com/MorZe/p/5993077.html
Copyright © 2020-2023  润新知