ฉันมีอินเทอร์เฟซบางอย่างที่ฉันต้องการให้บุคคลที่สามนำไปใช้ในอนาคตและฉันได้เตรียมการติดตั้งพื้นฐานด้วยตนเอง ฉันจะใช้คู่เพื่อแสดงตัวอย่างเท่านั้น
ปัจจุบันพวกเขาถูกกำหนดเป็น
สิ่งของ:
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);
}
ตอนนี้Item
และItemStackFactory
ฉันสามารถคาดการณ์ได้อย่างแน่นอนว่าบุคคลที่สามบางคนจำเป็นต้องขยายในอนาคต ItemStackContainer
อาจขยายได้ในอนาคต แต่ไม่ใช่ในลักษณะที่ฉันสามารถคาดการณ์ได้นอกเหนือจากการใช้งานเริ่มต้นที่ให้ไว้
ตอนนี้ฉันพยายามทำให้ห้องสมุดนี้แข็งแกร่งที่สุด นี่ยังอยู่ในช่วงเริ่มต้น (pre-pre-alpha) ดังนั้นนี่อาจเป็นการกระทำของวิศวกรรมมากกว่า (YAGNI) นี่เป็นสถานที่ที่เหมาะสมในการใช้ยาชื่อสามัญหรือไม่?
public interface ItemStack<T extends Item> {
T getItem();
int getQuantity();
}
และ
public interface ItemStackFactory<T extends ItemStack<I extends Item>> {
T createItemStack(I item, int quantity);
}
ฉันกลัวว่านี่อาจทำให้การใช้งานและการใช้งานยากขึ้นในการอ่านและทำความเข้าใจ ฉันคิดว่ามันเป็นคำแนะนำเพื่อหลีกเลี่ยงการสร้างรังทั่วไปทุกที่ที่เป็นไปได้