Dando continuidade aos post do “GoF[1]“, estou agora publicando o exemplo utilizando o padrão “Abstract Factory[2]“.
Observando o exemplo Abaixo (Veja exemplo anterior[3])
Podemos observar que o modelo proposto tem apenas quatro classes básicas (Verde Claro), e toda a criação do labirinto é feita pela classe “MazeGame”.O padrão Abstract Factory, permite a criação de uma família de objetos relacionados sem especificar suas classes concretas, ou seja:
Observando o diagrama de classe acima, podemos notar que:
- Foi definida como fábrica base a classe “MazeFactory“, a qual define métodos para criação dos tipos básicos “Room“,”Door“,”Wall“;
- Foi criada a classe “BombedWall” que estende a classe “Wall“;
- Foi criada a classe “EnchantedDoor” que estende a classe “Door“;
- Foram criadas as classe “RoomWithABomb” e “EnchantedRoom” que estendem a classe “Room“;
- Foram criadas duas fábricas que estendem a classe “MazeFactory“, sendo elas “BombedMazeFactory” e “EnchantedMazeFactory“;
// MazeFactory factory;
// EnchantedMazeFactory factory;
BombedMazeFactory factory;
Maze * aMaze = mazeGame.create(factory);
“Mudando apenas a instância da factory produzimos o que desejamos.”
Por final o resultado produzido é o apresentado na figura abaixo:

A melhor forma de entender os padrões é conhecendo sua finalidade e motivação, além de ver sua implementação, então não se esqueça de baixar o código deste exemplo e consultar os links de referência no final deste post.
Download[4]: http://downloads.sourceforge.net/pjmoo/GoF_AbstractFactory.zip
T+!
Vida Longa e Próspera!
———————————————-
Referência
[1]http://pt.wikipedia.org/wiki/Design_Patterns
[2]http://pt.wikipedia.org/wiki/Abstract_Factory
[3]http://davidferreira-fz.blogspot.com/2007/11/gof-exemplos.html
[4]http://downloads.sourceforge.net/pjmoo/GoF_AbstractFactory.zip
[5]http://pjmoo.wiki.sourceforge.net/GoF






