GOF - belaaiza/MeAjuda GitHub Wiki

1. Singleton

O padrão Singleton, que faz com que apenas uma instância da classe possa ser criada foi aplicado às classes Presenters da aplicação, para que dessa forma elas sejam instanciadas somente uma vez.

1.1. Código

Exemplo: UserPresenter

Além disso, o SharedPreferences do Android também funciona como um Singleton, uma vez que seta uma única variável global para a aplicação, que pode ser editada.

2. Strategy

O padrão Strategy foi utilizado para a realização da busca de usuários por escola e por nome, com contexto.

strategy1.png

2.1. Código

Context: SearchActivity

Strategy: SearchStrategy

Concrete Strategy:

SearchSchool

SearchTopic

SearchUser

3. Observer (Adaptado)

O "rating" do usuário varia de acordo com a avaliação de suas perguntas e comentários, que por sua vez influenciam na classificação do usuário, dessa forma, seria interessante o uso do Observer para observar estas variáveis de forma a atualizar o Rating e a Classificação de acordo com as mesmas. Entretanto algumas adaptações foram necessárias, diferente do Observer purista, onde há uma lista de objetos a serem atualizados, neste contexto um único usuário é atualizado, dispensando a necessidade de uma lista. Além disso, o usuário é sempre observado no aplicativo, o que dispensa o uso do "attach" para ativar sua observação e do "dettach" para desativá-la.

observer.png

3.1. Código

Subject: Gamification

Concrete Subject: UserGamification

Observer: GamificationObserver

Concrete Observer: UserGamificationObserver

4. TemplateMethod

O padrão TemplateMethod foi utilizado na implementação do processamento da avaliação do usuário.

4.1. Código

Classe Abstrata: ProcessRating Classe Concreta: ConcreteProcessRating

5. Facade

O padrão Facade foi utilizado na implementação do ranking de usuários.

5.1. Código

RankingFacade UserDAO

6. State

O padrão state foi utilizado no controle dos estados de login do usuário, isto é, logado e não logado.

state.png

6.1. Código

State LoggedIn NotLoggedIn