上篇讲述了简单工厂模式,本篇介绍一下工厂方法模式设计
上篇文章讲述简单工厂模式会通过一个统一工厂管理所有对象的创建,文末也说明了这种设计方式是不符合单一职能原则和开闭原则的,
工厂方法模式解决了简单工厂模式所面临的问题
工厂方法针对每个对象创建对应的工厂,每个对象的创建都通过自己的工厂进行管理,这样就符合了单一职能原则,
每次新增对象也会创建新的工厂去管理,而不是修改原油对象进行兼容,这样就符合了拓展开放,修改关闭的开闭原则。
下面就给出工厂方法的示例(应用了部分上节课对象)
工厂接口
public interface FruitsFactory { Fruits getFruits(); }
苹果工厂
public class AppleFactory implements FruitsFactory { @Override public Fruits getFruits() { return new Apple(); } }
橘子工厂
public class OrangeFactory implements FruitsFactory{ @Override public Fruits getFruits() { return new Orange(); } }
工厂的使用
public class FruitsController { public static void main(String[] args) { //苹果 AppleFactory appleFactory=new AppleFactory(); Fruits apple=appleFactory.getFruits(); System.out.println(apple.getName()); //橘子 OrangeFactory orangeFactory=new OrangeFactory(); Fruits orange=orangeFactory.getFruits(); System.out.println(orange.getName()); } }
public class FruitsController {
public static void main(String[] args) {
//苹果
AppleFactory appleFactory=new AppleFactory();
Fruits apple=appleFactory.getFruits();
System.out.println(apple.getName());
//橘子
OrangeFactory orangeFactory=new OrangeFactory();
Fruits orange=orangeFactory.getFruits();
System.out.println(orange.getName());
}
}