创建型模式 ( Creational Pattern )
将对类的实例化过程进行抽象,将软件模块中对象的创建与使用进行了分离。外界只关注这些对象的接口,并不关注他们的实现。使得软件结构更加清晰。 符合单一职责原则。
一、简单工厂模式定义:静态工厂方法(Static Factory Method)模式.
- 专门有一个类来负责对象的创建。
- 根据不同的参数获取不同的实例。
- 这些实例具有一个公共的父类。
二、简单工厂模式的结构
- Factory :
负责创建所有实例的内部逻辑 - Product
所有实例的公共父类,定义(描述)了所有实例的公共接口 - ConcreteProduct
对象实例的创建目标,具体实现了产品功能
三、简单代码实现
Product类实现
/**
* Porduct
* @author Coding_Jbz
*
*/
public interface Fruit {
public void showFruit();
}
Factory实现
/**
* Factory
*/
public class FruitFactoryV3 {
@SuppressWarnings("rawtypes")
public static Fruit getInstance(String Type) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Class clazz = Class.forName(Type);
return (Fruit) clazz.newInstance();
}
}
ConcreteProduct
/**Apple*/
public class Apple implements Fruit {
@Override
public void showFruit() {
System.out.println("I'm Apple");
}
}
/**Banana*/
package per.jbz.simpleFactory;
public class Banana implements Fruit {
@Override
public void showFruit() {
System.out.println("I'm banana");
}
}
四、优缺点
- 优点
- 创建简单,住需要传入对应参数即可得到对应实例。
- 缺点
- 工厂类的职责太大,产品增多是需要加入更多逻辑,违反开放-封闭原则
- 一旦工厂类不能工作,影响太大
- 简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构
五、适用场景
适用于数据库访问层DAO的封装