工厂模式有三种方法来实现,一种是通过传入参数的名称来决定创建哪一个产品,这种方法有很大的缺点,就是如果传入的产品名称如果不小心错误的话,就是无法来创建我们想得到的产品的。另一种是方法工厂模式,这种工厂模式中对应每一个产品有一个创建方法,这样创建了工厂实例以后,直接通过工厂实例就可以调用相应的产品的创建方法来创建我们需要的产品。但是这种工厂模式需要创建工厂实例,一个工厂可能使用的地方有很多,一直创建实例不好,所以就有了静态方法工厂模式。
package mode.factory.static_method_factory;/** * * 抽象的水果类(一个工厂,生产的肯定是某一类相同的产品,我们这里就是一个水果加工厂) * * */public interface Fruit { /* 水果都可以吃的 */ public void eat();}
下面是两个水果类的具体实现:
package mode.factory.static_method_factory;public class Apple implements Fruit { @Override public void eat() { System.out.println("吃苹果"); }}
package mode.factory.static_method_factory;public class Orange implements Fruit { @Override public void eat() { System.out.println("吃橘子"); }}有了这两种水果以后我们就可以创建我们的工厂,来生产这些水果了。
package mode.factory.static_method_factory;public class FruitFactory { /* 苹果生产线 */ public static Fruit getApple() { return new Apple(); } /* 橘子生产线 */ public static Fruit getOrange() { return new Orange(); }}工厂投产了,生产出的产品直接试吃看看;
package mode.factory.static_method_factory;public class Test { public static void main(String[] args) { FruitFactory.getApple().eat(); FruitFactory.getOrange().eat(); }}