简单工厂模式解释:
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
简单工厂模式的UML图:
简单工厂模式中包含的角色及其相应的职责如下:
工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。
抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。
Java 代码
Product.java
package com.godcin.test.simplefactory; public interface Product { public void operation(); }
ProductA.java
package com.godcin.test.simplefactory; public class ProductA implements Product { @Override public void operation() { System.out.println("产品A可以提供服务A"); } }
ProductB.java
package com.godcin.test.simplefactory; public class ProductB implements Product { @Override public void operation() { System.out.println("产品B可以提供服务B"); } }
SimpleFactory.java
package com.godcin.test.simplefactory; public class SimpleFactory { public Product getProduct(String option) { if (option.equals("productA")) { return new ProductA(); } else if (option.equals("productB")) { return new ProductB(); } return null; } }
SimpleFactoryTest.java
package com.godcin.test.simplefactory; public class SimpleFactoryTest { public static void main(String[] args) { SimpleFactory simpleFactory = new SimpleFactory(); Product productA = simpleFactory.getProduct("productA"); productA.operation();// 输入结果|产品A可以提供服务A Product productB = simpleFactory.getProduct("productB"); productB.operation();// 输入结果|产品B可以提供服务B } }
简单工厂模式优缺点:
•优点
– 工厂类包含从一个类的结构中选择初始类的业务逻辑,
实现了责任分离。
– 客户类不负有创建类的对象的责任,没有创建对象所需
要的条件语句,因此如果有新产品子类加入,不必修改
已有的客户类代码。
• 缺点
– 工厂类必须知道怎样创建每个子类的对象,每当增加产
品类的时候,都需要修改工厂类的代码。