Projeto do Domínio

Mesmo nos dias atuais, onde encontramos diversas informações sobre tudo na internet, na hora de realizarmos uma viagem ainda ficamos na dúvida sobre qual os melhores locais e coisas para fazer no destino escolhido. Na maioria das vezes, buscamos informações com conhecidos que já realizaram uma determinada viagem para nos basearmos na nossa.

Outra situação encarada por turistas, são os valores gastos na viagem. Nunca se sabe o valor ao certo que se gastará visitando determinados locais, dificultando assim, a escolha do destino do passeio.

Abaixo segue o diagrama de classes do sistema:

Servidor: Foram aplicados os seguintes padrões de projeto: REST e Delegate.

Pelo servidor possuir uma baixa complexidade devido ao fato das rotas direcionarem a requisição direto para o serviço esperado, não houve a necessidade da implementação de padrões de projeto muito complexos.

O padrão REST foi adotado para normalização das rotas e direcionamento de acesso, segue um exemplo das rotas utilizadas:

/*Login Route*/
[ip]/user/login/{user}/{pass}
{user} =>Em Base64
{pass} =>Md5
@returns
{success: 1 or 0,
 error: {String},
 data:{
    user_id: {int},
    hash: {String},
    name: {String},
    email: {String},
    url_picture: {String}
    }
}

O Padrão Delegate foi usado pelo RouteGestor, quando o mesmo determina qual controlador deve atender a requisição e delega o trabalho para a mesma:

/*Working*/
switch ($type) {
    case $route_types["user"]:
            $controller = new User();            
        break;

    case $route_types["trip"]:
            $controller = new Trip();
        break;

    case $route_types["route"]:
            $controller = new Route();
        break;

    case $route_types["place"]:
            $controller = new Place();
        break;

    default:
            $controller = new Error();
        break;
}
echo $controller->delegateRoute($code,$route_codes,$data);

O controlador recebe a seguinte estrutura:

abstract class Controller{
    const PATTERN_ERROR = "{'success':0,'error':404,data:{}}";
    /* Executa a função correta na rota correta
    * @receives code  {Codigo atual da rota}
    * @receives codes {Codigos das rotas}
    * @receives req   {Request data}
    */
    abstract public function delegateRoute($code,$codes,$req);

    .
    .
    .

results matching ""

    No results matching ""