设计模式之组合模式、依赖倒转原则

组合模式(Composite),将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

  • 何时使用组合模式:当需求中是体现部分与整体层次的机构时,希望用户可以忽略组合对象和单个对象的不同时,统一的使用组合结构中的所有对象时,就应该考虑用组合模式了。
  • 组合模式定义了包含基本对象和组合对象的类层次结构。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样不断的递归下去,客户代码中,任何用到基本对象的地方都可以用组合对象了。
    继承和组合优先使用组合

依赖倒转原则,高层模块不应该依赖底层模块。都应该依赖抽象。抽象不应该依赖细节。细节应该依赖抽象。

  • 传统的设计模式
    设计模式之组合模式、依赖倒转原则传统的设计模式通常自顶向下逐层依赖,高层、中层和底层之间耦合度较高,任何一层需要修改,就可能牵一发而动全身,不利于软件的扩展。

  • 依赖倒转原则的设计模式
    设计模式之组合模式、依赖倒转原则
    依赖倒转原则,如上图高层业务逻辑和实现层都依赖于抽象层,举个栗子,银行有各种业务:存款、转账等,这些业务属于高层业务逻辑,实现层相当于我们需要办理的业务,构造一个业务抽象类,根据单一职责原则,也就是一个类只实现一个功能,将不同的高层业务分别构造成类,每一个类都继承抽象类,当我们需要实现转账业务时,可以通过抽象类调用转账业务类,如果需要增加其他业务,比如支付,只需要在高层业务中增加一个支付类即可。