oop - 如果我使用工厂模式,是否需要返回实现接口的所有具体类的对象
问题描述
在为我的一位同事审查代码时,我指出了一些代码结构改进以及我们应该如何将工厂设计模式用于我们的用例,但我无法说服他,所以我在这里寻求全能社区的帮助意见没有开发商会忽视:)
该代码的结构类似于以下伪代码 -
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;
}
}
我有两个问题——
- 鉴于类 a、b 都扩展类 x 并且我们正在使用工厂类来确定要创建哪个对象,理想情况下,当 input == 'b' 并且我们返回 new b() 时,它不应该有额外的条件吗?
- 我不认为 class b 应该扩展 x 因为似乎我们正在使用它来确定要创建哪个对象并在该类上调用方法 y() 。我认为这应该是一个调用工厂而不是 X 的扩展的高级类
解决方案
推荐阅读
- cloudflare - 如何通过 API 或 Terraform 禁用 Cloudflare Browser Insights?
- rust - 我可以创建一个自定义迭代器迭代一个序列然后另一个(链不起作用)
- python - python中实例方法和静态方法同名
- ios - UILabel 不会固定到导航栏的底部
- azure - 为什么我们在来自同一资源组的应用服务之间有很多连接?
- laravel - Laravel Route:具有前缀和路由模型绑定的多个路由组
- sql - 在 SQL 中旋转多个列
- angular7 - 在 Angular 7 的 html 模板中显示为“”
- javascript - Twit.js - 我如何使用 Twitter 端点“友谊/创建”?
- r - 如何对这些数据执行简单的线性回归模型?