细节:实现层,
抽象不应该依赖于细节,细节应该依赖于抽象这一点没有违背,违背了高层模块不依赖于底层模块,两者都依赖于抽象这一点.
电脑:高层模块 主板、内存、硬盘:底层模块
JAVA语言特性:父类引用指向子类对象.
抽象层:MainBoard、Memory、HardDisk
高层业务逻辑:Computer
实现层:HuaSuoMainBoard.java、JinBangMemory.java、JinshiDunMemory.java、WeixingMainBoard.java、XiJieHardDisk.java、XiShuHardDisk.java
抽象不应该依赖于细节,细节应该依赖于抽象.
高层模块不依赖于底层模块,两者都依赖于抽象.
所以这里高层模块依赖的是抽象.Fruit是一个抽象类或者是接口.
假设FruitFactory是高层模块,它依赖的是抽象层(Fruit).而这个Banana或者是Apple也是依赖Fruit的.因为它们里面都是包含了get()采集方法.
这就是工厂方法模式的依赖倒转原则.