应用最广泛的模式-工厂方法模式
Posted VIJOZ的程序世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用最广泛的模式-工厂方法模式相关的知识,希望对你有一定的参考价值。
1、工厂方法模式的定义:
定义一个用于创建对象的接口,让子类决定实例化哪个类。
/**抽象产品类**/
public abstract class Product{
//产品类的抽象方法
//由具体的产品类去实现
public abstract void method();
}
/**具体产品类A**/
public class ConcreteProductA extends Product{
@Override
public void method(){
System.out.println(“我是具体的产品A”);
}
}
/**具体产品类B**/
public class ConcreteProductB extends Product{
@Override
public void method(){
System.out.println(“我是具体的产品B”);
}
}
/**抽象工厂类**/
public abstract class Factory{
//抽象工厂方法
//具体生产什么由子类去实现
//@return 具体的产品对象
public abstract Product createProduct();
}
/**具体工厂类**/
public class ConcreteFactory extends Factory{
@Override
public Product createProduct(){
return new ConcreteProductA();
}
}
/**客户类**/
public class Client{
public static void main(String[] args){
Factory factory = new ConcreteFactory();
Product p = factory.createProduct();
p.method();
}
}
2、通过反射的方式更简洁地来生产具体产品对象:
/**抽象工厂类**/
public abstract class Factory{
//抽象工厂方法
//具体生产什么由子类去实现
//@param clz 产品对象类类型
//@return 具体的产品对象
public abstract <T extends Product> T createProduct(Class<T> clz);
}
/**具体工厂类**/
public class ConcreteFactory extends Factory{
@Override
public <T extends Product> T createProduct(Class<T> clz){
Product p = null;
try{
p = (Product) Class.forName(clz.getName()).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return (T) p;
}
}
/**客户类**/
public class Client{
public static void main(String[] args){
Factory factory = new ConcreteFactory();
Product p = factory.createProduct(ConcreteProductB.class);
p.method();
}
}
以上是关于应用最广泛的模式-工厂方法模式的主要内容,如果未能解决你的问题,请参考以下文章