Antarmuka mendefinisikan kontrak antara kelas yang mengimplementasikan antarmuka dan klien mereka. Mereka digunakan sebagai mekanisme abstraksi sehingga klien dapat memanipulasi "barang yang memiliki perilaku tertentu".
Jadi jawaban umum untuk pertanyaan "haruskah saya membuat dan menggunakan antarmuka ini?" adalah: Ya, jika Anda dapat mengaitkan konsep (satu) yang semantik relevan bagi klien Anda.
Sebagai contoh, Comparable adalah antarmuka yang baik, karena menjelaskan bahwa banyak hal dapat dibandingkan berkat salah satu metode mereka, dan sebagai klien saya tertarik berurusan dengan objek yang sebanding (misalnya untuk menyortirnya). Sebuah contrario, CoolStuff bukan antarmuka yang baik jika Anda mengakui objek keren tidak memiliki perilaku tertentu (pada kenyataannya, Anda dapat membayangkan sebuah perangkat lunak di mana berurusan dengan objek keren masuk akal, karena mereka memiliki perilaku umum seperti beCool metode).
Dalam kasus khusus Anda, saya percaya antarmuka Anda tidak berguna. Siapa yang akan menggunakannya, bagaimana dan kapan? Anda tidak dapat membuat antarmuka untuk masing-masing nilai yang dapat diubah. Jadi tanyakan pada diri sendiri apa properti yang relevan dan menarik di balik metode Anda.
Jika yang Anda inginkan adalah berurusan dengan objek yang memiliki semua nilai yang dapat diubah yang dapat diakses melalui beberapa metode, lihat gagasan tentang kacang Jawa dan cara Anda dapat memaksa kelas Anda untuk mengadopsi konvensi mereka.