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

工厂模式的实现方式

希赛网 2024-06-15 12:12:10

在软件开发中,工厂模式是一种设计模式,它允许我们创建对象,而无需将对象的实现细节暴露给客户端代码。在本文中,我们将讨论工厂模式的实现方式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。

一、简单工厂模式

简单工厂模式是最基础的工厂模式,它通过一个工厂类,根据传入的参数,返回一个特定的对象实例。因此,客户端代码不需要了解对象的具体实现细节,只需要知道如何使用这个对象即可。

简单工厂模式的实现方式非常简单。首先,定义一个抽象的产品类,该类为所有具体产品类定义了公共接口。其次,针对不同的产品类型,分别定义一个具体的实现类。最后,定义一个简单工厂类,该类根据传入的参数,动态的创建并返回不同类型的产品对象。示例代码如下:

```

// 抽象产品类

abstract class Product {

public abstract void use();

}

// 具体产品类

class ConcreteProductA extends Product {

public void use() {

System.out.println("Product A");

}

}

class ConcreteProductB extends Product {

public void use() {

System.out.println("Product B");

}

}

// 简单工厂类

class SimpleFactory {

public static Product createProduct(String type) {

switch (type) {

case "A":

return new ConcreteProductA();

case "B":

return new ConcreteProductB();

default:

throw new IllegalArgumentException("Invalid product type.");

}

}

}

// 客户端代码

public class Client {

public static void main(String[] args) {

Product product = SimpleFactory.createProduct("A");

product.use();

}

}

```

二、工厂方法模式

工厂方法模式是针对简单工厂模式的一种优化,它通过引入抽象工厂类,将工厂的具体实现推迟到子类中实现。这样客户端代码只需要和抽象工厂类以及具体产品类交互,而具体的工厂和具体产品实现则分别在不同的子类中实现。

工厂方法模式的实现方式如下。首先,定义一个抽象工厂类,该类为所有具体工厂类定义了公共接口。其次,针对不同的产品类型,分别定义产品接口和具体实现类。最后,在具体工厂类中,实现抽象工厂类定义的工厂方法。示例代码如下:

```

// 抽象产品类

interface Product {

void use();

}

// 具体产品类

class ConcreteProductA implements Product {

public void use() {

System.out.println("Product A");

}

}

class ConcreteProductB implements Product {

public void use() {

System.out.println("Product B");

}

}

// 抽象工厂类

abstract class AbstractFactory {

public abstract Product createProduct();

}

// 具体工厂类

class ConcreteFactoryA extends AbstractFactory {

public Product createProduct() {

return new ConcreteProductA();

}

}

class ConcreteFactoryB extends AbstractFactory {

public Product createProduct() {

return new ConcreteProductB();

}

}

// 客户端代码

public class Client {

public static void main(String[] args) {

AbstractFactory factory = new ConcreteFactoryA();

Product product = factory.createProduct();

product.use();

}

}

```

三、抽象工厂模式

抽象工厂模式是针对工厂方法模式的一种优化,它通过引入抽象工厂类和抽象产品类,将产品的创建推迟到具体工厂中实现。当需要创建一组相关的产品时,抽象工厂可以一次创建出这一组产品。

抽象工厂模式的实现方式如下。首先,定义一个抽象产品类接口和一个抽象工厂类接口,接着创建产品族的具体实现类和工厂族的具体实现类,每个工厂中可以创建不同的一组产品。示例代码如下:

```

// 抽象产品类

interface ProductA {

void use();

}

interface ProductB {

void eat();

}

// 具体产品类

class ConcreteProductA1 implements ProductA {

public void use() {

System.out.println("Product A1");

}

}

class ConcreteProductA2 implements ProductA {

public void use() {

System.out.println("Product A2");

}

}

class ConcreteProductB1 implements ProductB {

public void eat() {

System.out.println("Product B1");

}

}

class ConcreteProductB2 implements ProductB {

public void eat() {

System.out.println("Product B2");

}

}

// 抽象工厂类

interface AbstractFactory {

ProductA createProductA();

ProductB createProductB();

}

// 具体工厂类

class ConcreteFactory1 implements AbstractFactory {

public ProductA createProductA() {

return new ConcreteProductA1();

}

public ProductB createProductB() {

return new ConcreteProductB1();

}

}

class ConcreteFactory2 implements AbstractFactory {

public ProductA createProductA() {

return new ConcreteProductA2();

}

public ProductB createProductB() {

return new ConcreteProductB2();

}

}

// 客户端代码

public class Client {

public static void main(String[] args) {

AbstractFactory factory = new ConcreteFactory1();

ProductA productA = factory.createProductA();

ProductB productB = factory.createProductB();

productA.use();

productB.eat();

}

}

```

综上所述,工厂模式的实现方式主要包括简单工厂模式、工厂方法模式和抽象工厂模式。不同的实现方式可以适用于不同的需求场景,开发人员可以根据具体情况选择合适的工厂模式。

扫码咨询 领取资料


软考.png


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

软考资格查询系统

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