普通工厂
public class BookFactory{
public static Book getBook(){
return new Book();
}
}
动态工厂和单例工厂
Class Book{}
Class Book1 extends Book{}
Class Book2 extends Book{}
public interface BookFactory{
public Book getBook();
}
public Book1Factory inplements BookFactory{
//工厂重写“获得实例”方法
public Book1 getBook(){
return new Book1();
}
//单例私有化构造方法
private Book1Factory(){};
//单例1,DCK模式
private static volatile Book1Factory book1Factory=null;
public static Book1Factory getInstace(){
if(book1Factory==null){
synolize(Book1Factory.class){
if(book1Factory==null){
return new Book1Factory();
}
}
}
return book1Factory;
}
//单例2,静态内部类模式
public static Book1Factory getInstance(){
return Book1FactoryHoldper.book1Factory;
}
private static Class Book1FactoryHoldper{
private static Book1Factory book1Factory=new Book1Factory();
}
}