Camada de lógica de negócio
A camada de lógica de negócio da aplicação deve conter a concretização das entidades do domínio da aplicação. Neste exemplo, o domínio é muito simples. A aplicação a desenvolver tem que manter o conjunto de números inteiros inseridos pelo utilizador, preservando a ordem de inserção dos números. Assim, é suficiente ter apenas uma classe, designada como IntegerManager, na camada de lógica de negócio com as seguintes funcionalidades:
- Guardar uma série de números inteiros não repetidos;
- Permitir adicionar e remover um número à série;
- Devolver a série de números com a mesma ordem com que foram inseridos.
A classe IntegerManger deve ser concretizada no package ex.core, em que ex representa o nome da aplicação e core representa a camada de lógica de negócio. Esta classe precisa de guardar a série de números inseridos pelo utilizador. Para guardar esta série podemos utilizar uma colecção do tipo Set ou do tipo List. Tendo em conta que é necessário preservar a ordem de inserção, então devemos escolher o tipo List.
Note-se que as entidades da camada de lógica de negócio não devem referir-se a entidades relacionadas com a interacção com o utilizador por forma a serem completamente independentes da interacção com o utilizador, permitindo assim que se possa alterar completamente a camada de serviços ou de apresentação sem ter qualquer impacto na concretização da camada de lógica de negócio.
De seguida apresenta-se a concretização desta classe.
package ex.core; /** * This class is the single core entity of this small example. It holds a list of unique int numbers. **/ import java.util.List; import java.util.ArrayList; import java.util.Collections; public class IntegerManager { private List<Integer> _numbers; public IntegerManager() { _numbers = new ArrayList<>(); } public boolean addNumber(Integer n) { if (_numbers.contains(n)) return false; _numbers.add(n); return true; } public List<Integer> getNumbers() { return Collections.unmodifiableList(_numbers); } }