AOP更适合做一些登录,log等较大,牵涉面很广的功能,但是由于单独就一个模块而言,其性能并不高,所以在少数模块中并不推荐。
Decorator确实能够很好的缓解当功能组合过多时子类继承所能够带来的问题。但是在得到很大的灵活性的同时,Decorator在使用时也表现得较为复杂。看看仅仅为了得到一个IO流,除了要创建核心的流外,还要为其加上各种各样的装饰类,这使得代码变得复杂而难懂。Decorator强大之处在于在多个ConcreteDecorator嵌套时,可以组合非常多的功能在一个对象上。慎用!
Birdge较简单,将变化的属性根据类型抽象出来,如属性1,属性2,然后根据每个属性的继承情况生成相应的concrete类,在真正需要使用属性时,只需将属性对象赋予相应对象即可。Bridge模式的应用一般在“两个非常强的变化维度”,有时候即使有两个变化的维度,但是某个方向的变化维度并不剧烈——换言之两个变化不会导致纵横交错的结果,并不一定要使用Bridge模式。