gpt4 book ai didi

java - 抽象工厂模式接口(interface)实现或类扩展

转载 作者:行者123 更新时间:2023-12-02 05:23:46 24 4
gpt4 key购买 nike

我目前正在实现用于数据库连接的抽象工厂模式,我需要分离业务逻辑,并且不需要为需要连接到我的应用程序的每个新数据库类型重写代码,所以现在我有这些类(class)

Interface Connection{}
MySql implements Connection{}
PostgreSql implements Connection{}

所以这里的问题是每个实现接口(interface) Connection 的类都必须重写接口(interface)中的方法,我需要一个类,其中有 setStatement、executeQuery 等通用方法,但随后需要一些方法像 connect 方法一样重写,该方法会根据数据库类型而有所不同,

我的第一个想法是在接口(interface) Connection 和子类之间有一个额外的类,如果没有重写,方法将被保留和使用,但这个解决方案感觉不是正确的方法(如果我错了,请纠正我)

Interface ConnectionInterface{}
class Connection{}
MySql extends Connection{}
PostgreSql extends Connection{}

谢谢

最佳答案

这没有什么问题。但我会这样做:

interface Connection{}
abstract class AbstractConnection implements Connection {}
final class MySql extends AbstractConnection{}
final class PostgreSql extends AbstractConnection{}

使用 Java 8,您还可以在接口(interface)中使用默认方法并省略抽象类。

完全替代的方法是提供方法的类DefaultConnectionOperations。然后您可以拥有此类的一个对象,该对象被注入(inject)到每个 Connection-Implementation 中。但如果您的情况需要依赖注入(inject),这是有争议的。

关于java - 抽象工厂模式接口(interface)实现或类扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26256249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com