简单工厂模式(simpleFactory),又叫做静态工厂方法模式,它定义一个具体的工厂类来负责创建一些类的实例,而这些被创建的类都应该有一个共同的父类,这样可以实现面向对象而不是面向具体编程。简单工厂类主要由3部分组成:工厂类、抽象类和实现抽象类的具体类。
简单工厂模式的原理结构图:
代码示例:
抽象类:
//Product.java
//抽象接口
package cn.desginPatten
public inteeface Product{
public void operation1();
}
具体产品类:
//Product1.java
//实现Product接口
package cn.desginPatten
public class Product1 implements Product{
public void operation1(){
//Product1的具体实现
}
}
//Product2.java
//实现Product接口
package cn.desginPatten
public class Product2 implements Product{
public void operation1(){
//Product2的具体实现
}
}
工厂类:
package cn.desginPatten
public class simpleFactory{
public static Product createProduct(String ProductName){
if("1".equals(ProductName))
return new Product1();
else if("2".equals(ProductName))
retrun new Product2();
return null;
}
客户端代码:
public class simpleFactoryTest{
public static void main(String [] args){
Product product = simpleFactory.createProduct("1");
product.operation1();
Product product = simpleFactory.createProduct("2");
product.operation1();
}
简单工厂模式的优缺点:简单工厂模式是一种创建型模式,主要应用于创建对象。
优点:客户端不再负责对象的创建,而是将创建对象丢到专门创建对象的工厂类,客户端只负责对对象的调用,这样各个类的职责便比较明确了。
缺点:简单工厂采用静态的方法来创建对象,这使得该方法无法被继承,假设在上例中需要再增加1个产品,那么只能修改工厂类方法,如果是1000个呢?这将导致后期工厂类的代码变的很庞大、臃肿。不利于后期的维护。
简单工厂模式适用情况:只需要创建少量的具体对象。(这个少量具体是多少?有待验证)
简单工厂类的改进:------