浅谈设计模式 -- 工厂模式
工厂模式也是设计模式当中的创建型模式,不直接创建对象,而是把创建对象的工作交给一个“工厂”类来统一完成,这样做很好地封闭了创建逻辑,大大地增加系统的可维护性与扩展性。主要分为简单工厂与抽象工厂。
一、简单工厂模式
(图片来自百度)
如上图所示a产品,b产品继承相同的产品接口,再由Creator工厂通过factory‘生产’出来。
package top.flash.factory.simple; public interface IProduct { void function(); }
package top.flash.factory.simple; public class ProductA implements IProduct { @Override public void function() { System.out.println("我是A产品"); } }
package top.flash.factory.simple; public class ProductB implements IProduct { @Override public void function() { System.out.println("我是B产品"); } }
package top.flash.factory.simple; public class Creator { public IProduct factory(String className){ if(className == null){ return null; } if(className.equals("ProductA")){ return new ProductA(); }else if(className.equals("ProductB")){ return new ProductB(); } return null; } }
package top.flash.test.factory; import top.flash.factory.simple.Creator; import top.flash.factory.simple.ProductA; import top.flash.factory.simple.ProductB; public class FactoryTest { public static void main(String[] args) { Creator creator = new Creator(); ProductA productA = (ProductA) creator.factory("ProductA"); ProductB productB = (ProductB) creator.factory("ProductB"); productA.function(); productB.function(); } }
我是A产品
我是B产品
二、抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂,如果说简单工厂是一条生产线,那么抽象工厂就是多条生产线,大概的类图:
(图片来自菜鸟教程)
抽象工厂对简单工厂的一系列拓展,这里就不代码演示了。