Ola galera!!..
Estou com duvidas em relação a padrões de projeto, estou estudando mas porem vejo que ainda tem muita coisa a aprender. Até comprei um livro sobre padrões de projeto para J2EE (Core) e sei que padrões de projeto não é um regra para o desenvolvimento do sistema, porem uma ajuda para deixar o software com “qualidade” necessaria (Caminhos da pedra)…rsrss
Entendo das divisões entre camadas e do atropelamento que não pode existir entre uma camada e outra, mas em relação as camadas de negocios tenho minhas duvidas: Vejo que padrões como Session Façade, Service Locator, Business Object e Transfer Object são para sistemas distribuidos e que usam EJB normalmente e é ai que começa minha duvida.
Estou desenvolvendo um softwarer pequeno, onde o meu banco fica juntamente com os aplicativo do sistema mas não estou vendo motivos para usar os padrões da camada de negocios pois o meu sistema não é distribuido então tenho a camada de visualização, servlets que fazem o controle do caminho a ser seguido e a camada de intregração que é onde esta os objetos DAO.
Na camada de visualização uso JSTL e não faço acesso a banco de dados eu apenas mostro os resultados que ficam armazenados nas minhas classes beans. Os servlets são responsaveis de receberem as solicitações e enviarem aos DAOs para o armazenamento permanente do dado ou entaum o envio da resposta para a visualização.
Agora vai a minha pergunta:
Com isso estou realmente usando padrões de projeto?
Sou obrigado a utilizar esses padrões de camada de negocios?
as minhas classes Beans são regra de negocios? onde elas se encaixam?
Posso utilizar os meus servlets recebendo requesições e chamando DAOs para o armazenamentos? Exemplo:
package br.pronto.atendimento.servlet;
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.pronto.atendimento.ConfUsua;
import br.pronto.atendimento.bean.Convenio;
import br.pronto.atendimento.dao.ConvenioDAO;
import br.pronto.atendimento.bean.Prestador;
import br.pronto.atendimento.dao.PrestadorDAO;
import br.pronto.atendimento.bean.Atendimento;
import br.pronto.atendimento.dao.AtendimentoDAO;
import br.pronto.atendimento.bean.Paciente;
import br.pronto.atendimento.bean.Usuario;
/**
* Servlet implementation class for Servlet: Control_CadAte
*
*/
public class Control_CadAte extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public Control_CadAte() {
super();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession sessao = request.getSession(true);
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
boolean save = false;
Date date = new Date();
Atendimento atendimento = new Atendimento();
AtendimentoDAO atendimentoDAO = new AtendimentoDAO();
Paciente paciente = new Paciente();
Convenio convenio = new Convenio();
Prestador prestador = new Prestador();
Usuario usuario = (Usuario) sessao.getAttribute("usuario");
paciente.setCd_paciente(Integer.parseInt(request.getParameter("cd_paciente")));
atendimento.setPaciente(paciente);
convenio.setCd_convenio(Integer.parseInt(request.getParameter("cd_convenio")));
atendimento.setConvenio(convenio);
atendimento.setDt_atendimento(format.format(date));
prestador.setCd_prestador(Integer.parseInt(request.getParameter("cd_prestador")));
atendimento.setPrestador(prestador);
atendimento.setNr_guia(request.getParameter("nr_guia"));
atendimento.setNr_carteira(request.getParameter("nr_carteira"));
atendimento.setDt_validade(request.getParameter("dt_validade"));
atendimento.setUsuario(usuario);
save = atendimentoDAO.Save(atendimento);
if(save == false)
{
RequestDispatcher dispatcher = request.getRequestDispatcher("salvo_atendimento.jsp");
dispatcher.forward(request, response);
}
else
response.sendRedirect("ErroUsuario.html");
}
public Collection<Convenio> ListaConvenio()
{
Collection<Convenio> listaConvenio;
Convenio convenio = new Convenio();
ConvenioDAO convenioDAO = new ConvenioDAO();
listaConvenio = convenioDAO.SelectAll(convenio);
return listaConvenio;
}
public Collection<Prestador> ListaPrestador()
{
Collection<Prestador> listaPrestador;
Prestador prestador = new Prestador();
PrestadorDAO prestadorDAO = new PrestadorDAO();
listaPrestador = prestadorDAO.SelectAll(prestador);
return listaPrestador;
}
public void Sessao(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
ConfUsua confUsua = new ConfUsua();
confUsua.Sessao(request, response);
}
}
Tenho muitas duvidas, mais vejo que isso é uma questão de orientação
Vejo a area de padrões de projeto como uma area muito legal e que te da o auxilio para desenvolver um software que tenha qualidade e também muita manutenibilidade.