工厂方法模式 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.使用场景