1.定义#
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。由工厂类和产品类组成,工厂类负责产生产品。工厂方法模式是new一个对象的替代品。生产产品由反射机制实现。
2.类图#

3.实现#
3.1抽象产品类##
public abstract class Product {
public void method(){
//抽象产品类公共方法
}
public abstract void method2();
}
3.2具体产品类##
public class ConcreteProduct1 extends Product {
public void method2(){}
}
public class ConcreteProduct1 extends Product {
public void method2(){}
}
3.3抽象工厂类##
public abstract class Factory{
public abstract <T extends Product> T createProduct(Class<T> c);
}
3.4具体工厂类##
public class ConcreteFactory extends Factory {
public <T extends Product> T createProduct(Class<T> c){
Product product = null;
try{
product = (Product)Class.forName(c.getName()).newInstance();
} catch (Exception e){
//异常处理
}
return (T)product;
}
}
3.5场景类##
public class Client{
public static void main(String args[]) {
Factory factory = new ConcreteFactory();
Product product = factory.createProduct(ConcreteProduct.class);
}
}
4.优点#
1.良好的封装,代码结构清晰。
2.扩展性优秀,很容易添加新的产品类。
3.屏蔽产品类细节,调用者不用关心产品内部的变化,只要产品借口不变。
4.解耦框架,高层模块只需要知道产品的抽象类。
网友评论