工厂方法-定义与类型
定义:定义一个创建对象的接口
但让视线这个接口的类来决定实例化哪个类
工厂方法让类的实例化推迟到子类中进行
类型:创建型
创建对象需要大量重复的代码
客户端(应用)不依赖与产品实例如何被创建、实现等细节
一个类通过其子类来指定创建哪个对象
优点: 用户只需要关心所需产品对应的工厂,无须关心创建细节
加入新产品符合开闭原则,提高可扩展性
缺点: 类的个数容易过多,增加复杂度
增加了系统的抽象性和理解难度
特点:同一产品等级
区分: 产品等级与产品族的概念,
美的空调、海尔空调,属于同一产品等级,都是空调
美的空调、美的洗衣机,属于同一产品族,都是美的
JDK中的体现:
例子一:集合类java.util.Collection中定义的一个接口Iterator属于工厂方法可以让
(Collection属于抽象工厂)
Iterator的一个实现类,ArrayList的实现:实现iterator方法返回了一个内部类Itr,该内部类Itr实现了Iterator接口
例子二:java.net.URLStreamHandlerFactory在JDK里是用来解决URL协议扩展使用的
public interface URLStreamHandlerFactory{
URLStreamHandler createURLStreamHandler(String protocol);
}
例子三:org.slf4j.LoggerFactory