希赛考试网
首页 > 软考 > 软件设计师

java简单工厂模式及代码

希赛网 2024-06-15 12:05:53

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

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

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. 用简单工厂模式创建的对象通常没有抽象接口,使得扩展困难。

扫码咨询 领取资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件