項目中有一個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
,何時不。
代碼的可重用性不應該是擴展類的理由。 – Kayaman