Üçüncü tarafların gelecekte uygulamaya koymayı düşündüğüm bazı arayüzlerim var ve kendime temel bir uygulama sağlıyorum. Örneği göstermek için sadece bir çift kullanacağım.
Şu anda, bunlar
öğe:
public interface Item {
String getId();
String getName();
}
ItemStack:
public interface ItemStackFactory {
ItemStack createItemStack(Item item, int quantity);
}
ItemStackContainer:
public interface ItemStackContainer {
default void add(ItemStack stack) {
add(stack, 1);
}
void add(ItemStack stack, int quantity);
}
Şimdi, Item
ve ItemStackFactory
ben kesinlikle gelecekte uzatmak gerek bazı üçüncü parti öngörebiliriz. ItemStackContainer
gelecekte de uygulanabilir, ancak öngördüğüm şekillerde değil, sağlanan varsayılan uygulamamın dışında.
Şimdi bu kütüphaneyi mümkün olduğunca sağlam yapmaya çalışıyorum; bu hala erken aşamalarda (alfa öncesi öncesi) olduğundan, bu bir aşırı mühendislik eylemi (YAGNI) olabilir. Burası jenerik ilaçların kullanımı için uygun bir yer mi?
public interface ItemStack<T extends Item> {
T getItem();
int getQuantity();
}
Ve
public interface ItemStackFactory<T extends ItemStack<I extends Item>> {
T createItemStack(I item, int quantity);
}
Bunun uygulama ve kullanımı okumayı ve anlamayı zorlaştıracağından korkuyorum; Bence mümkün olan her yerde jenerik ilaçları yerleştirmekten kaçınmak için bir tavsiye.