gpt4 book ai didi

Java:如果只有构造函数不同,则使用继承

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:44:54 26 4
gpt4 key购买 nike

我需要在服务中实现相同的命令序列,但根据情况对多个不同的数据库对象进行操作。我想知道在这种情况下使用继承是否是一种好的做法 - 这将包括仅在特定类的构造函数中传递不同的 dao。像这样:

 public abstract class Service{

private Dao dao;

public Service(Dao dao){
this.dao = dao;
}

public void mainMethod(){
dao.step1();
subMethod();
dao.step2();
}

public void subMethod(){
//...
}
}


public class ServiceImpl1 extends Service{

public ServiceImpl1(DaoImpl1 daoImpl1){
super(daoImpl1);
}
}

最佳答案

继承对于将消息(方法调用)委派给父类(super class)而几乎没有变化是很有用的。但是,您并没有将消息委托(delegate)给父类,而是更改了构造函数的参数。所以不需要继承任何东西。

这很好:

public class Service{ 
private Dao dao;

public Service(Dao dao){
this.dao = dao;
}

public void mainMethod(){
dao.step1();
subMethod();
dao.step2();
}

public void subMethod(){
//...
}
}

然后你可以创建像

这样的实例
Service posgresService = new Service(new PosgresDao());
Service redisService = new Service(new RedisDao());

参见 depenency injection了解更多详情

关于Java:如果只有构造函数不同,则使用继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56011826/

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