简单工厂模式
简单工厂模式是类的创建模式,是由一个工厂类数据根据传入的参数决定创建出哪一种产品类的实例
简单工厂模式的结构
涉及到三个角色
1)工厂类角色:工厂类在客户端的直接调用下创建产品对象,由一个java类实现
2)抽象产品角色:拥有产品的共同接口,通常由一个java抽象类或接口实现
3)具体产品角色:工厂方法创建的任何对象都是这个角色的实例,通常由一个java类实现
/**
* 工厂类角色
*/
public class Creator
{
public static Product factory(String type)
{
Product product = null;
if("product".equals(type))
{
product = new ConcreteProduct();
}
else if("product2".equals(type))
{
product = new ConcreteProduct2();
}
return product;
}
}
/**
* 具体产品角色
*/
public class ConcreteProduct implements Product
{
public void operate()
{
System.out.println("具体产品角色");
}
}
/**
* 具体产品角色2
*/
public class ConcreteProduct2 implements Product
{
public void operate()
{
System.out.println("具体产品角色2");
}
}
/**
* 抽象产品角色
*/
public interface Product
{
void operate();
}
简单工厂模式在java中的应用
java.text.DateFormat
简单工厂模式的优缺点
优点:
2)模式的核心是工厂类,这个类含有必要的逻辑,可以决定在什么时候创建哪一个产品类的实例,以达到分工明确
1)客户端不再创建对象,而是把创建对象的职责交给了具体的工厂去创建
缺点:
1)工厂的静态方法无法被继承
2)代码维护不易,对象要是很多的话,工厂是一个很庞大的类
3)这种模式对“开-闭”原则支持的不够,如果有新的产品加入到系统中就要修改工厂类