Analise a implementação da classe java.util.Calendar A classe Calendar é definida por dois construtores, ambos protegidos: - protected Calendar() Cria um calendário com a time zone e locale default - protected Calendar(TimeZone zone, Locale aLocale) Cria um calendário com uma time zone e local específicos Assim, para criar uma instância de Calendário é usado os métodos getInstance(): - public static Calendar getInstance() Retorna um calendário com a time zone e locale default - public static Calendar getInstance(TimeZone zone) Retorna um calendário com uma time zone específica e locale default - public static Calendar getInstance(Locale aLocale) Retorna um calendário com uma time zone default e locale específica - public static Calendar getInstance(TimeZone zone,Locale aLocale) Retorna um calendário com uma time zone e local específicos Assim, pode-se concluir que a classe java.util.Calendar usa: - Abstract Factory: a classe 'Calendar' é uma classe abstrata que define uma interface para criar objetos de outros tipo de calendário. As subclasses 'BuddistCalendar', GregorianCalendar', 'JapaneseImperialCalendar' implementam esta interface. - Singleton: o método estático getInstance() retorna uma única instância de 'Calendar', evitando a criação de novos objetos