首页 > 解决方案 > 如果我使用工厂模式,是否需要返回实现接口的所有具体类的对象

问题描述

在为我的一位同事审查代码时,我指出了一些代码结构改进以及我们应该如何将工厂设计模式用于我们的用例,但我无法说服他,所以我在这里寻求全能社区的帮助意见没有开发商会忽视:)

该代码的结构类似于以下伪代码 -

abstract class X {
    abstract y();
}

class a extends X {
    y();
}

class b extends X {
    y(){
       factory().y();
    }
}

class factory(){
    determineClass(input){
        if(input == 'a')
           return new a();
        else return null;
    }

}

我有两个问题——

  1. 鉴于类 a、b 都扩展类 x 并且我们正在使用工厂类来确定要创建哪个对象,理想情况下,当 input == 'b' 并且我们返回 new b() 时,它不应该有额外的条件吗?
  2. 我不认为 class b 应该扩展 x 因为似乎我们正在使用它来确定要创建哪个对象并在该类上调用方法 y() 。我认为这应该是一个调用工厂而不是 X 的扩展的高级类

标签: oopdesign-patternsfactory-pattern

解决方案


推荐阅读