gpt4 book ai didi

java - 我应该扩展服务类还是只使用它的一个实例?

转载 作者:行者123 更新时间:2023-11-29 10:15:04 25 4
gpt4 key购买 nike

项目中有一个StoreService,它提供了一些读取和写入远程数据存储的方法。例如

public class StoreService {
public StoreService(String url, String username, String password) {}
public void save(String category, String key, String value) {}
public String read(String category, String key) {}
}

然后我看到在项目的子模块中还有另一个 UserStoreService,它扩展了 StoreService:

public class UserStoreService extends StoreService {
public UserStoreService(String url, String username, String password) {
super(url, username, password);
}
public void saveUserName(String userId, String userName) {
super.save("user", userId, userName);
}
public void getUserName(String userId, String userName) {
return super.read("user", userId);
}
}

你可以看到它只是添加了一些方法。这里用extends好不好?

我可以在没有 extends 的情况下做到这一点:

public class UserStoreService {
private StoreService storeService;
public UserStoreService(String url, String username, String password) {
this.storeService = new StoreService(url, username, password);
}
public void saveUserName(String userId, String userName) {
storeService.save("user", userId, userName);
}
public void getUserName(String userId, String userName) {
return storeService.read("user", userId);
}
}

但我不确定哪种解决方案更好,什么时候应该使用 extends,什么时候不应该。

最佳答案

当您觉得可以提取一些多态行为并且子类和父类(super class)之间确实存在is-a关系时,使用继承。

否则在大多数情况下,更喜欢组合而不是继承,因为它也限制了 UserStoreService 将来能够扩展其他类的可能性.

关于java - 我应该扩展服务类还是只使用它的一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210771/

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