标签:
算是看书的笔记并非原创,总结:
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
首先,工厂方法模式是new一个对象的替代品,所以中所有需要生产对象的地方都可以使用,单是需要慎重考虑是否要增加一个工厂类进行管理,增加代码的复杂度。
抽象产品类
public abstract class product {
//产品类的公共方法
public void method1(){
System.out.println("产品类的公共方法业务逻辑");
}
public abstract void method2();
}
具体产品类
public class ProductOne extends product {
@Override
public void method2() {
// TODO Auto-generated method stub
System.out.println("ProductOne method2 ********");
}
}
public class ProductTow extends product {
@Override
public void method2() {
// TODO Auto-generated method stub
System.out.println("ProductTow method2 *********");
}
}
抽象工厂类
public abstract class Creator {
public abstract <T extends product> T CreatorProduct(Class<T> c);
}
具体工厂类
public class CreatorFactory extends Creator {
@Override
public <T extends product> T CreatorProduct(Class<T> c) {
// TODO Auto-generated method stub
product pro = null;
try {
pro = (product)Class.forName(c.getName()).newInstance();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (T) pro;
}
}
场景类
public static void main(String[] args) {
CreatorFactory factory = new CreatorFactory();
product productOne = factory.CreatorProduct(ProductOne.class);
productOne.method1();
productOne.method2();
product producttow = factory.CreatorProduct(ProductTow.class);
producttow.method1();
producttow.method2();
}
1,缩小为简单工厂模式
2,升级为多个工厂类
3,代替单例模式
4,延迟初始化
标签:
原文地址:http://blog.csdn.net/yanwenyuan0304/article/details/51361993