欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2.工厂方法模式

程序员文章站 2022-03-09 19:11:50
...

抽象产品类

package com.lw.pd.FactoryMethod;
/*
 * 抽象产品类
*/
public abstract class Product {
	//产品类的公共方法
	public void method1(){
		//业务逻辑处理
	}
	
	//抽象方法
	public abstract void method2();
}

具体产品类1

package com.lw.pd.FactoryMethod;

public class CreateProduct1 extends Product {

	@Override
	public void method2() {
		// TODO Auto-generated method stub
		//业务逻辑处理
	}

}

具体产品类2

package com.lw.pd.FactoryMethod;

public class CreateProduct2 extends Product {

	@Override
	public void method2() {
		// TODO Auto-generated method stub
		//业务逻辑处理
	}

}

抽象工厂类

package com.lw.pd.FactoryMethod;
/*
 * 抽象工厂类
*/
public abstract class Creator {
	/*
	 * 创建一个产品对象,其输入参数类型可以自行设置
	 * 通常为String,Enum,Class等,也可为空
	*/
	public abstract <T extends Product> T CreateProduct(Class<T> c);
}

具体工厂实现类

package com.lw.pd.FactoryMethod;
/*
 * 具体工厂实现类
*/
public class ConcreteCreator extends Creator {

	@Override
	public <T extends Product> T CreateProduct(Class<T> c) {
		// TODO Auto-generated method stub
		Product product = null;
		try {
			product =(Product) Class.forName(c.getName()).newInstance();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			//异常处理
		} 
		return (T)product;
	}
}

场景类

package com.lw.pd.FactoryMethod;
/*
 * 场景类
*/
public class Client {
	Creator creator = new ConcreteCreator();
	Product product1 = creator.CreateProduct(CreateProduct1.class);
	Product product2 = creator.CreateProduct(CreateProduct2.class);
	//继续业务逻辑
}

 

转载于:https://my.oschina.net/ven01/blog/714960