工厂方法模式 1.定义 工厂方法模式(FACTORY METHOD)是一种常用的类创建型 设计模式,意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中 。“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。
2.具体实现 2.1类图
2.2代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 package 设计模式;public class FactoryMethodPattern { public static void main (String[] args) { Water water = new DrinksFactory().createWater(); Water water1 = new SodaWaterFactory().createWater(); water.show(); water1.show(); } } interface Water { void show () ; } class Drinks implements Water { @Override public void show () { System.out.printf("我是饮料" ); } } class SodaWater implements Water { @Override public void show () { System.out.println("我是苏打水" ); } } interface AbstractFactory { Water createWater () ; } class DrinksFactory implements AbstractFactory { @Override public Water createWater () { System.out.println("饮料生产中......." ); return new Drinks(); } } class SodaWaterFactory implements AbstractFactory { @Override public Water createWater () { System.out.println("苏打水生产中......." ); return new SodaWater(); } }
3.优点
用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。
灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。
典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。
4.缺点
类的个数容易过多,增加复杂度
增加了系统的抽象性和理解难度
抽象产品只能生产一种产品,此弊端可使用抽象工厂模式解决。
5.使用场景