首页 > 试题广场 >

下面代码使用了哪种设计模式() interface Abst

[单选题]
下面代码使用了哪种设计模式()
interface AbstractProductA {
    void operationA();
}

class ConcreteProductA1 implements AbstractProductA {
    public void operationA() {
        System.out.println("ConcreteProductA1 operationA");
    }
}

class ConcreteProductA2 implements AbstractProductA {
    public void operationA() {
        System.out.println("ConcreteProductA2 operationA");
    }
}

interface AbstractProductB {
    void operationB();
}

class ConcreteProductB1 implements AbstractProductB {
    public void operationB() {
        System.out.println("ConcreteProductB1 operationB");
    }
}

class ConcreteProductB2 implements AbstractProductB {
    public void operationB() {
        System.out.println("ConcreteProductB2 operationB");
    }
}

interface AbstractFact {
    AbstractProductA createProductA();
    AbstractProductB createProductB();
}

class ConcreteFact1 implements AbstractFact {
    public AbstractProductA createProductA() {
        return new ConcreteProductA1();
    }

    public AbstractProductB createProductB() {
        return new ConcreteProductB1();
    }
}

class ConcreteFact2 implements AbstractFact {
    public AbstractProductA createProductA() {
        return new ConcreteProductA2();
    }

    public AbstractProductB createProductB() {
        return new ConcreteProductB2();
    }
}
  • 工厂方法模式
  • 建造者模式
  • 抽象工厂模式
  • 适配器模式
为什么是抽象工厂模式 在这个代码片段中: • AbstractProductA 和 AbstractProductB 定义了产品的抽象接口。 • 具体产品类(如 ConcreteProductA1、ConcreteProductA2)实现了这些接口,表示同一产品(A)不同的实现版本。 • 抽象工厂模式适用于这种根据不同实现创建一系列相关对象的场景。 这个代码片段展示了抽象工厂模式的典型结构。通过使用抽象工厂模式,可以在不改变客户端代码的情况下,灵活地切换不同的产品族(例如,A1和B1,或者A2和B2)。
发表于 2024-11-08 11:17:17 回复(1)