工厂模式--简单工厂模式

不属于GoF23 种设计模式

定义:简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。

基本流程
工厂模式--简单工厂模式

要点: 当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。

对产品类进行重构,不能设计一个包罗万象的的产品类,而需根据实际情况设计一个产品层次结构

  • Product
    提供公共方法的实现,即所有产品都需要的方法。
    提供抽象业务方法,不同产品可以根据需要及定义该方法。
abstract class Product {
    //所有产品类的公共业务方法
    public void methodSame() {
        //公共方法的实现
    }
 
    //声明抽象业务方法
    public abstract void methodDiff();
}
  • ConcreteProduct
class ConcreteProduct extends Product {
    //实现业务方法
    public void methodDiff() {
        //业务方法的实现
    }
}
  • Factory
    简单工厂模式的核心是工厂类,在没有工厂类之前,客户端一般会使用new关键字来直接创建产品对象,而在引入工厂类之后,客户端可以通过工厂类来创建产品
class Factory {
    //静态工厂方法
	public static Product getProduct(String arg) {
		Product product = null;
		if (arg.equalsIgnoreCase("A")) {
			product = new ConcreteProductA();
            //初始化设置product
		}
		else if (arg.equalsIgnoreCase("B")) {
			product = new ConcreteProductB();
            //初始化设置product
		}
		return product;
	}
}

简单工厂模式改进方案

我们可以将静态工厂方法的参数存储在XML或properties格式的配置文件中。

  • 无需修改代码中的参数,重新编译代码。只需要修改配置文件里的内容即可。

不足:

当系统中需要引入新产品时,由于静态工厂方法通过传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,违背“开闭原则”

参考作者:刘伟 http://blog.****.net/lovelion

上一篇:presto jdbc连接测试


下一篇:java控制台订单系统