通过 if...else 语句或switch...case 语句 判断选择不同的实现类; 且随着时间的推移,还要增加新的判断; 应该改为用什么设计模式,可以满足开闭原则
在这种情况下,可以考虑使用工厂模式来满足开闭原则。工厂模式可以根据特定的条件动态创建对象,从而将对象的创建过程与客户端代码分离,同时也能够轻松地扩展新的实现类而不需要修改现有的代码。
具体来说,可以使用工厂方法模式或抽象工厂模式来实现。工厂方法模式通过定义一个工厂接口和多个具体工厂类,每个具体工厂类负责创建特定的产品对象;抽象工厂模式则通过定义一个抽象工厂接口和多个具体工厂类,每个具体工厂类负责创建一组相关的产品对象。
下面是一个简单的示例,演示如何使用工厂方法模式来实现根据条件选择不同的实现类,并且能够轻松扩展新的实现类:
// 定义产品接口
interface Service {
void performOperation();
}
// 具体产品类1
class ServiceImpl1 implements Service {
@Override
public void performOperation() {
System.out.println("Using implementation 1");
}
}
// 具体产品类2
class ServiceImpl2 implements Service {
@Override
public void performOperation() {
System.out.println("Using implementation 2");
}
}
// 定义工厂接口
interface ServiceFactory {
Service createService();
}
// 具体工厂类1
class ServiceFactoryImpl1 implements ServiceFactory {
@Override
public Service c

本文讨论了在需要频繁添加新实现类的情况下,如何通过工厂模式(包括工厂方法模式和抽象工厂模式)来满足开闭原则。特别提到JavaORM框架如Bee工具中的DbFeatureRegistry,展示了如何利用配置信息关闭不同数据库方言的SQL实现,保持代码的可扩展性。
最低0.47元/天 解锁文章
496

被折叠的 条评论
为什么被折叠?



