Esse projeto foi feito com o propósito de estudo para exemplificar a implementação do padrão de projeto Builder pattern
para um domínio de meios de publicação de uma Editora, no qual possui os seguintes meios de publicações: Blog, Revista e Jornal.
A utilização do padrão de projeto Builder
, diminui a complexidade de criar objetos, deixando o processo de instanciação mais intuitiva e clara. No qual todo o processo de instanciação de objetos é abstraído em métodos de uma classe separada Builder
define os atributos do objeto em questão e ao mesmo tempo retorna a própria instância do objeto, que pode, por consequência, ter os métodos da classe builder utilizados de forma sequencial
A aplicação pode testada pela classe principal Main
Foi definido inicialmente as interfaces dentro do pacote /core
:
- IArticle: define o contrato a ser seguido por todos os meios de publicação. São implementados pelas classes: Blog, Magazine (Revista) e Newspaper (Jornal)
- IArticleBuilder: define o contrato a ser seguido pelas classes Builder. São implementadas pelas classes Builder: BlogBuilder, MagazineBuilder e NewspaperBuilder
Todas as classes principais da regra de negócios herdam de IArticle. Que são:
As classes Builder implementam de IArticleBuilder, são usadas para abstrair toda a complexidade da criação de classes e diminuir a repetição de código para instanciar as classes e definir seus atributos. Foram definidas dentro do pacote /builder
:
- BlogBuilder: É a classe Builder da classe Blog
- MagazineBuilder: É a classe Builder da classe Magazine
- NewspaperBuilder: É a classe Builder da classe Newspaper
Observação: o projeto feito com base em um artigo do Marcio Ballem, o artigo pode ser visto clicando aqui