工厂方法(Factory Pattern)
Define an interface for creating an object,but let subclasses decide which class toinstantiate.Factory Method lets a class defer instantiation to subclasses.定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
简单工厂方法(Simple Factory Method,也叫静态工厂)
用一个工厂类去封装new的工厂,返回新建的一个对象的引用。如果这个方法是静态的,就称之为静态工厂。
工厂方法模式
在父类声明一个final方法用来真正被外部调用(在子类中被继承但是不允许覆盖)。在这个方法中调用一个抽象方法去具体实现新建对象,可是这个抽象方法本身由子类实现。
JDK:
• java.lang.Object#toString() (在其子类中可以覆盖该方法)
• java.lang.Class#newInstance()
• java.lang.Integer#valueOf(String) (Boolean, Byte,Character,Short, Long, Float 和 Double与之类似)
• java.lang.Class#forName()
• java.lang.reflect.Array#newInstance()
• java.lang.reflect.Constructor#newInstance()
Android:
public class DownloadFactory {
public enum DownloadType {
TYPE_DOWNLOAD_XUTILS,
TYPE_DOWNLOAD_ORIGIN;
}
public static IDownload createDownloadImpl(DownloadType type){
//封装不同类型的对象创建
if(type == DownloadType.TYPE_DOWNLOAD_XUTILS){
return new XUtilsDownloadImpl();
}else{
return new OriDownloadImpl();
}
}
}
网友评论