长久以来,我似乎误解了“针对接口编程”这句话的含义,它并不是指遇到问题先想到建立接口,恰恰相反,最先考虑的应该是建立类。我认为“针对接口编程”应该这样理解:先分析问题,找出问题的共性,对其共性提取基类,针对基类设计接口。如果一个接口仅有一个实现,那就应该考虑设计此接口的必要性,如果仅仅是为了所谓的“预先设计”而做出这样的设计,那么这种设计是不合理的,除非为了实现某个框架而跨层,比如经典的MVC框架,其C和M层之间应该全部使用接口。Control层作为客户程序,仅应该提供控制,它所使用的接口应该尽可能简单,这似乎是最应该用到facade模式的地方。