[b]声明:
本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客[url]http://chjavach.iteye.com/[/url][/b]
本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客[url]http://chjavach.iteye.com/[/url][/b]
package design.pattern;
/*
* 个人理解:简单工厂模式就是IOC;
* 客户端要用到某一对象,本来是由客户创建的,现在改成由工厂创建,客户直接取就好了
*/
interface IProduct {
void desc();
}
class ProductImplA implements IProduct {
public void desc() {
System.out.println("Product A");
}
}
class ProductImplB implements IProduct {
public void desc() {
System.out.println("Product B");
}
}
class Factory {
//可以把这个方法定义成static类型的,那Factory这个类就成为一个工具类了,称为静态工厂模式
public IProduct createProduct(int type) {
IProduct product = null;
/*究竟要创建哪一类型的Product,一般有几种:
* 1.直接传递参数,像下面的代码那样
* 2.在properties文件里面配置要创建的类名(全类名,包括包名,以便反射),读取文件,得到类名,反射生成实例
* 3.根据数据库的参数创建
* 4.为不同的产品提供不同的方法:createProductA(); createProductB()...
*/
if (type == 1) {
product = new ProductImplA();
} else if (type == 2) {
product = new ProductImplB();
}
return product;
}
}
public class SimpleFactoryPattern {
public static void main(String[] args) {
Factory f = new Factory();
int type = 1;
IProduct product = f.createProduct(type);
product.desc();
}
}