Created
March 13, 2015 22:43
-
-
Save gabfssilva/a6eb64351f216b270f1c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface Command<T>{ | |
void execute(T context); | |
} | |
class Chain<T>{ | |
private List<Command<T>> commands; | |
public Chain(List<Command<T>> commands){ | |
this.commands = commands; | |
} | |
public void start(T context){ | |
//loga o que quiser aqui, falando que a chain vai iniciar + o context do parâmetro | |
for(Command<T> command : commands){ | |
command.execute(context); | |
//loga o que quiser aqui, falando qual command foi executado + o context do parâmetro | |
} | |
//loga o que quiser aqui, falando que a chain acabou + o context do parâmetro | |
} | |
} | |
Ex: | |
class CompraContext{ | |
//todos os atributos para realizar uma compra | |
} | |
class PagaCompraCommand implements Command<CompraContext>{ | |
void execute(CompraContext context){ | |
//a partir do context vc paga a compra e seta outros valores no context que são importantes para outros commands. | |
} | |
} | |
class SalvaCompraCommand implements Command<CompraContext>{ | |
void execute(CompraContext context){ | |
//a partir do context vc salva a compra e seta outros valores no context que são importantes para outros commands. | |
} | |
} | |
Chain<CompraContext> chain = new Chain<CompraContext>(Arrays.asList(new PagaCompraCommand(), new SalvaCompraCommand())); //vai executar na ordem que vc passar | |
CompraContext context = //inicialize o objeto da maneira que preferir, setando o que a chain precisar | |
chain.start(context); | |
//aqui o seu context vai ter o que os commands setaram nela |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment