2010-09-26 1 views
-1

Я создаю java API для адресной книги Является ли хорошей практикой использовать Enums в моем API?Перечисления в Java API

Я использую его следующим образом:

public enum AddressType { 

WORK,HOME 

} 

public class AddressBook implements Function{ 

    Map<String, Details> byName = new TreeMap<String,Details>(); 


    public void addNewContact(String name, String address, AddressType 
      addressType) { 

     byName.put(name, new Details(name,new Address(address,addressType))); 
// addressType is my enum AddressType 
    } 

Пожалуйста посоветуйте если есть лучший способ сделать это?

Также вы могли бы указать, как я могу определить, какие методы я должен объявить защищенными и частными? Я хочу, чтобы этот API был доступен для публики, поэтому я понял, что все методы, классы, перечисления, которые я создаю, должны быть общедоступными. Но разве это не будет игнорировать свойство инкапсуляции Java ??

Пожалуйста, помогите.

Спасибо }

+4

Вы отправили много вопросов. На ваш вопрос было внесено столько изменений, потому что вы не обратили внимание на форматирование сообщений. Если бы вы были более свежими на этом сайте, это было бы хорошо, потому что кто-то должен был объяснить это вам. Но ты больше не свеж. Почему вы не обращаете внимание на форматирование своего вопроса, несмотря на то, что вы редактируете и комментируете свои предыдущие вопросы? В правой части редактора вы можете найти правила форматирования сообщений. Вы можете увидеть предварительный просмотр в нижней части редактора (PS: я не спустил вниз, но могу представить, что это была причина). – BalusC

+1

Некоторые люди часто берут, редко дают. – Alex

+1

Прошу прощения за вышеупомянутые проблемы. Будут уделять больше внимания и вносить как можно больший вклад. Извините за неудобства. – JJunior

ответ

0

перечислений как правило, являются хорошей идеей. Для любых данных, которые могут быть представлены как небольшое количество неизменных строк, это очень полезный тип данных. (Особенно приятно, что при желании вы можете приложить к ним метаданные и поведения)

Это говорит о том, что у меня есть одна мысль о том, как использовать ее для таких типов контактов, как WORK и HOME, что это делает невозможным чтобы пользователь имел свой собственный тип контакта. Например, что делать, если у меня есть две неполные рабочие места и вы хотите классифицировать людей, на основе которых они работают?

Если вы в порядке с этим ограничением, я бы сказал, иди за ним.

Если вам нужна дополнительная гибкость, я бы предложил либо сохранить тип контакта в виде строки, либо перейти к решению базы данных. Для чего-то вроде этого может иметь смысл хранить ваши данные в базе данных SQLite, поскольку это позволяет легко создавать реляционную модель.

+1

есть ли какой-нибудь лучший способ, с помощью которого я могу включить гибкость? – JJunior