“Nunca exponha métodos de sua classe como públicos, mesmo que para implementar uma interface, a menos que eles devam se tornar parte de sua API. Ao invés disso, use uma inner class privada para implementar os métodos dessa interface e deixe sua classe gerenciar a classe interna de maneira encapsulada.”
O que acham dessa afirmação? Recentemente escrevi um artigo sobre esse tema no meu blog. Gostaria de saber o que vocês acham sobre o assunto.
Quando é necessário programar alguma funcionalidade interna, de forma encapsulada, esta funcionalidade não deve ser pública, pois o que é publico é o que faz parte da API, através do contrato da interface.
Estou desenvolvendo um framework pra automatização de relatório (baseado em Jasper) e passei por este problema.
Estou redesenhando uma parte que não ficou boa de modo que as interfaces estabeleçam somente o contrato, deste modo, posso ter classes internas implementando interfaces específicas do meu encapsulamento, sem torná-la pública.
Tira uma duvida sobre encapsulamento.
Sou iniciante e estou estudando MVC.
Entao no meu projeto de estudos, eu fiz as seguintes classes:
Proprietario : com get’s e set’s
ProprietarioDAO : com CRUD no meu banco
DAOFactory : FÁbrica de DAOs, sigleton, que dá acesso as classes DAO
ProprietarioBO : Regras de Negocio, q chama os métodos CRUD da ProprietarioDAO.
Mas por exemplo, se eu quiser instanciar um objeto do tipo ProprietarioDAO e acessar o método Create eu consigo, pois ele public, para eu conseguir acessá de dentro da DAOFactory.
Tem como só a DAOFactory “ver” os métodos da ProprietarioDAO