软考
APP下载

java简单工厂模式及代码

在软件工程中,工厂模式是一种创建型设计模式,其定义为定义一个用于创建对象的接口,让子类决定实例化哪个类。此模式与抽象工厂模式和工厂方法模式的区别是,简单工厂模式只允许一个工厂类来创建所有类型的对象。

简单工厂模式的实现主要包括三个角色:

1. 工厂类,负责创建所有类型的对象;

2. 抽象产品类,定义了所有具体产品类实现的接口;

3. 具体产品类,实现抽象产品类接口,是工厂方法创建的对象。

下面是一个简单的Java代码示例:

```

public class SimpleFactory {

public static Product getProduct(String productType) {

if (productType == null) {

return null;

}

if (productType.equalsIgnoreCase("ProductA")) {

return new ProductA();

} else if (productType.equalsIgnoreCase("ProductB")) {

return new ProductB();

} else if (productType.equalsIgnoreCase("ProductC")) {

return new ProductC();

}

return null;

}

}

public interface Product {

void doSomething();

}

public class ProductA implements Product {

@Override

public void doSomething() {

System.out.println("ProductA doSomething()");

}

}

public class ProductB implements Product {

@Override

public void doSomething() {

System.out.println("ProductB doSomething()");

}

}

public class ProductC implements Product {

@Override

public void doSomething() {

System.out.println("ProductC doSomething()");

}

}

```

在上述示例代码中,SimpleFactory是工厂类,getProduct()方法用于创建不同类型的产品对象。Product是抽象产品类,定义所有具体产品类实现的接口。ProductA、ProductB和ProductC均是具体产品类,实现Product接口。

客户端可以通过调用SimpleFactory类的getProduct()方法获取不同类型的产品对象。例如:

```

Product productA = SimpleFactory.getProduct("ProductA");

productA.doSomething();

Product productB = SimpleFactory.getProduct("ProductB");

productB.doSomething();

Product productC = SimpleFactory.getProduct("ProductC");

productC.doSomething();

```

调用结果如下:

```

ProductA doSomething()

ProductB doSomething()

ProductC doSomething()

```

从多个角度来分析,简单工厂模式的优缺点如下:

优点:

1. 适合创建类数量较少的情况;

2. 可以隐藏对象创建的具体细节,客户端只需要知道所需产品的类型就可以获取对象;

3. 简单工厂模式实现简单,易于理解和维护。

缺点:

1. 工厂类的职责过重,如果新增产品类型,需要修改工厂类的代码,违反了开闭原则;

2. 由于工厂类是静态方法,不能被继承,扩展性受限;

3. 用简单工厂模式创建的对象通常没有抽象接口,使得扩展困难。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库