看了看才知道,策略模式与合成模式居然是一直在用的东西.
策略模式就是依赖倒转原则的一种方式,依赖接口编程,不依赖具体实现.可以做到具体实现(比如算法)与业务逻辑流程(又称责任)的分离(脱耦,就喜欢看到这种东西).其实是很常见的一种思路.
合成模式就是C++里面的虚函数,而Java里面方法本来就是虚函数.根据里氏代换原则,父类可以传入的地方,子类可以代换.如果一个父类的方法被子类覆盖的话,在C++中如果不声明为虚函数(或者说虚方法)的话,自动会调用父类的,而在Java中只能调用子类的,直接在语法上支持合成模式.