工厂方法模式,对简单工厂模式进行了升级。我们将水果园比作一个工厂,
在简单工厂模式下,水果园是一个具体的工厂,直接用来生产各种各样的水果。
那么在工厂方法模式下,水果园是一个抽象工厂,那么苹果树,香蕉树等
就相当于是具体工厂,生产苹果、香蕉等水果。每有一种新的水果要生产,则
需要种植生产这种水果植物,即创建生产具体水果的工厂。
产品维度进行扩展(生成一种产品)。
这里苹果和香蕉都实现水果接口类中的get()方法,负责生产苹果和香蕉的具体工厂实现水果这个抽象工厂接口。在工厂方法模式下如果想要生产新的水果,即创建新的类。
比如生产梨子,需要新建一个梨子类实现水果类的get()方法,创建梨子工厂实现水果工厂来生产梨子。
用到Java面向对象的三大特性之一–多态。在新建工厂时,由FruitFactory接口指向具体的工厂(AppleFactory)。通过具体的工厂生产水果时,由Fruit接口指向具体的实例对象(Apple)。