Üçü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, Itemve ItemStackFactoryben kesinlikle gelecekte uzatmak gerek bazı üçüncü parti öngörebiliriz. ItemStackContainergelecekte 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.