Escolar Documentos
Profissional Documentos
Cultura Documentos
ConheaosPadresdeProjeto
www.devmedia.com.br
[versoparaimpresso]
Linkoriginal:http://www.devmedia.com.br/articles/viewcomp.asp?
comp=957
Oobjetivodestetextoapresentarumtemaquenosltimosanos
temganhadoaatenodacomunidadedesoftware,queacadadia
cobradaparaprojetarsoluesdesoftwarecommelhorqualidadee
comomenorcusto.Umaformasemdvidaquecontribuiparaa
obtenonaqualidadeseprojetosdesoftwaresoospadresde
projetos,eminglsdesignpatterns.
Nodecorrerdotextoserapresentadaumadefiniodoque,eo
quecaracterizaumpadrodeprojeto,alm,clarodemostrarqueo
usoexageradopodelevarasituaoinversaaquesepropemos
padresdeprojeto.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
1/25
01/08/2016
ConheaosPadresdeProjeto
Introduo
Atualmentenoseconcebeumprocessodedesenvolvimentode
softwaresriosemautilizaodaorientaoaobjetos,poisesta
permiteagregarqualidadesimportantesaossistemasdesenvolvidos
sobseusparadigmas,comoaextensabilidadeeareusabilidade[1]
Massomenteporestarutilizandoa,nogarantiadeseobteressas
qualidades.Paracriarasmelhoressolues,precisoseguirum
processodetalhadoparaobterumaanlisedosrequisitos,funcionais
ounofuncionais,edesenvolverumprojetoqueossatisfaaeque
possibilitesubmetlosateste,paraconstatareventuaisfalhas,alm
domaissedesejaqueoprojetotenhaumaarquiteturaflexvelpara
acomodarfuturosproblemaserequisitossemanecessidadeda
realizaodoreprojeto.
Analisandoocotidianododesenvolvimentodesoftwarepossvel
identificarqueaprocuraporumasoluoaumproblemaespecfico
possuicaractersticasidnticas,senoigualaencontradaemum
projetoanteriormentedesenvolvido,masquedevidodeficinciado
processo,asoluoeoproblemanoforadocumentadoesvezes
topoucocompreendidoemsuatotalidadeimpossibilitandoo
reaproveitamentodasidiasesolues.Destaforma,problemas
idnticosqueserepetememoutroscontextosnosoreconhecidos
comotal,consumindotempoerecursosembuscadesoluesqueem
tese,jhaviamsidoencontradas.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
2/25
01/08/2016
ConheaosPadresdeProjeto
Umacoisaqueosprojetistasavanadossabemquenodevemfazer
resolvercadaproblemaapartirdeprincpioselementaresoudo
zero.Aoinvsdisso,elesreutilizamsoluesquefuncionaramno
passado,eosutilizamrepetidamenteemseusprojetos.como
resolverumproblemamatemticoatentoindito,oupelo,menos
desconhecidoaalgum.Primeiroutilizasetodososconhecimentose
princpiosmatemticosquesetemconhecimentoequevenhaaser
tilnasoluo,depoisdealgumastentativaseusodasteorias
matemticas,chegasesoluoeapartirdatemseumalgoritmo
(estrutura)montadoquepodeserutilizadopararesolvertantos
problemasexistiremequesejamidnticosaoresolvido,emesmoque
noseja,possvelreaproveitarasidiaseconclusesdoproblema
resolvido.porissoqueospadresdeprojetos,designpatterns,tem
chamadoaatenoedespertadoointeressedosprojetistasde
software,porproporcionarelementosqueconduzemao
reaproveitamentodesoluesparaprojetos,enoapenasa
reutilizaodecdigo.
Ospadresdeprojetostornammaisfcilreutilizarsoluese
arquiteturasbemsucedidasparaconstruirsoftwaresorientadosa
objetosdeformaflexvelefcildemanter.Ousodepadresde
projetopodereduziracomplexidadedoprocessodeprojetarsoftware.
Almdisso,osoftwareorientadoaobjetosbemprojetadopossibilita
aosprojetistasreutilizareempregarcomponentespreexistentesem
sistemasfuturos.
Emsoftware,ospadresdeprojetonosoclassesnemobjeto.Em
vezdisso,osprojetistasusamessespadresparaconstruirconjuntos
declasseseobjetos.Parautilizlosdemaneiraeficaz,osprojetistas
precisamsefamiliarizarcomospadresmaispopulareseeficazes
utilizadospelaengenhariadesoftwareeconheceroseucontextoe
escopo.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
3/25
01/08/2016
ConheaosPadresdeProjeto
Aidiadeprojetarsoluesapartirdealgojconhecidoe
documentado,nonovaetopoucoteveorigemnaindustriade
software,apesardelajdemonstraruminteressepelotema.Aidia
surgiuem1977quandoChristopherAlexanderpublicouumcatlogo
commaisde250padresparaaarquiteturacivil,quediscutiam
questescomunsdaarquitetura,descrevendoemdetalheoproblema
easjustificativasdesuasoluo.
ChristopherAlexanderdescobriuquediminuindoofoco,ouseja,
procurandoestruturasqueresolvamproblemassimilares,elepode
discernirsimilaridadesentreprojetosdealtaqualidade.Elechamou
essassimilaridadesdepadres[5].
Algumtempodepoiseleformalizaseumtododedescriodos
padres,defendendoqueseuusonolimitariaosarquitetoss
soluesprescritas,masgarantiriaapresenadeelementos
fundamentais,eapossibilidadedeaperfeioalaatravsdas
experinciasadquiridas.Essemtodochamouatenodacomunidade
desoftware,fazendoqueotemaganhassedestaquenasconferncias
sobreorientaoaobjetos.Em1995ErichGama,RichardHelm,Ralph
Johnson,JohnVlissides,conhecidoscomoosquatroamigos[Gangof
FourGoF],publicaramolivrosobreottulo:Designpatterns
elementsofreusableobjectorientedsoftware,AddisonWesley
Longman,queganhouumaversonalnguaportuguesasobreottulo
dePadresdeProjetoSoluesreutilizveisdesoftwareorientado
aobjetos.Bookman.Olivroumcatlogoquedescreve23padres
deprojetocadaumfornecendoumasoluoparaumproblemade
software,seucontexto,aplicaoesuaseventuaisconseqncias,
dividindoosem3categorias:padresdecriao,estruturais,ede
comportamento.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
4/25
01/08/2016
ConheaosPadresdeProjeto
Definiroqueumpadrodeprojetodemaneiraclaraeobjetiva,tem
sidooobjetivodacomunidadedesoftware,desdeadcadade80.O
primeiroaapresentarumadefiniodoqueseriaumpadro,foio
arquitetodeprofessorChristopherAlexandre,noseulivroATimes
WayofBuilding(OxfordUniversityPress,1979),que:Cadapadro
umaregradetrspartes,queexpressaumarelaoentreumcerto
contexto,umproblemaeumasoluo.Sendoassimparaentendera
necessidade,existncia,deumpadronecessrioestudarsuas
partes:oproblema,asoluoeocontextosobreoqualele
aplicvel.
Dessaforma,resumidamentepodeseentendercomopadrode
projeto,comoasoluorecorrenteparaumproblemaemum
contexto,mesmoqueemprojetosereasdistintas.Observequeos
termoschavesdessadefinioso:contexto,problemaesoluo,o
quetornaobrigatriocompreensoinequvocadecadaum.Um
contextodizrespeitoaoambiente,eascircunstnciasdentrodoqual
algoexiste.Oproblemaaquestoindefinida,algoqueprecisaser
investigadoesolucionado.Normalmente,estatreladoaocontexto
emqueocorre.Finalmente,asoluorefererespostadoproblema
queajudaasolucionalo.
Entretanto,setivermosumasoluoparaumproblemaemumcerto
contexto,elanonecessariamentepodeconstituirumpadro,pois
necessrioqueelatenhacomocaractersticaaregularidade,isto,
elaseconstituircomoumpadrosepuderserutilizada
repetidamente.
SegundoChristopherAlexander,cadapadrodescreveumproblema
nonossoambienteeoncleodasuasoluo,detalformaquevoc
possausarestasoluomaisdeummilhodevezes,semnuncafaze
lodamesmamaneira.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
5/25
01/08/2016
ConheaosPadresdeProjeto
Ogrupodosquatroamigosclassificouospadresdeprojetopordois
critrios.Oprimeirocritrioafinalidaderefleteoqueumpadro
faz.Ospadrespodemterfinalidadesdecriao,comportamentoe
estrutural.Ospadresdecriaodescrevemastcnicaspara
instanciarobjetos(ougruposdeobjetos),epossibilitamorganizar
classeseobjetosemestruturamaiores,osdecomportamentose
caracterizampelamaneirapelasquaisclassesouobjetosinterageme
distribuemresponsabilidadeseosestruturaislidamcomacomposio
declassesouobjetos.Osegundocritriooescopoespecificaseo
padroaplicadoclasseouobjeto.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
6/25
01/08/2016
ConheaosPadresdeProjeto
4.Todopadrodeverelatarquaissoassuasconseqnciaspara
quepossaseranalisadaasoluoalternativadeprojetosepara
acompreensodosbenefciosdaaplicaodoprojeto.
Nopodeserconsideradoumpadrodeprojetotrechodecdigos
especficos,mesmoqueparaoseucriadorelereflitaumpadro,que
solucionaumdeterminadoproblema,porqueospadresdevemestar
aumnvelmaiordeabstraoenolimitadoarecursosde
programao.Umpadrodeprojetonomeia,abstraieidentificaos
aspectoschavesdeumaestruturadeprojetocomumparatornalatil
paraacriaodeumprojetoorientadoaobjetosreutilizvel[3].
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
7/25
01/08/2016
ConheaosPadresdeProjeto
Ospadressoummapa,noumaestratgica.Oscatlogos
geralmenteapresentaroalgumcdigofontecomoumaestratgica
deexemplo,portantoelesnodevemserconsideradoscomo
definitivos.Ospadresnoajudaroadeterminarqualaplicaovoc
deveestarescrevendoapenascomoimplementarmelhoraaplicao
assimqueoconjuntoderecursoseoutrasexignciasforem
determinados.Ospadresajudamcomoqueecomo,masnocom
porqueouquando.
Oconceitodeutilizarospadresdeformaindiscriminadaconhecida
comoantipadres(antipatterns).DeacordocomAndrewKoenig[3],
seumpadrorepresentaamelhorprtica,entoumantipadro
representaumalioaprendida.
Existemduasnoesdeantipadres:
1.Aquelesquedescrevemumasoluoruimparaumproblemaque
resultouemumasituaoruim
2.Aquelesquedescrevemcomoselivrardeumasituaoruime
comoprocederdessasituaoparaumasituaoboa.
Emsumaumantipadroconstituiaousoindevidodospadresde
projeto,ouoseuusoexagerado,oquepodeserconstatadopela
utilizaodepadresimprpriosparaumdeterminadocontexto,ou
usoinadequado.Autilizaodospadresproporcionaumaumentona
flexibilidadedosistema,entretantopodedeixalomaiscomplexoou
degradaraperformance.Algumasperdassotolerveis,mas
subestimarosefeitoscolateraisdaadoodospatterns,umerro
comum,principalmentedaquelesquetomamousocomoum
diferencialenopelarealnecessidade.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
8/25
01/08/2016
ConheaosPadresdeProjeto
problemas de projeto
Oalvoprincipaldousodospadresdeprojetonodesenvolvimentode
softwareodaorientaoaobjetos.Comoosobjetossoos
elementoschavesemprojetosOO,apartemaisdifcildoprojetoa
decomposiodeumsistemaemobjetos.Atarefadifcilporque
muitosfatoresentramemjogo:encapsulamento,granularidade,
dependncia,flexibilidade,desempenho,evoluo,reutilizaoe
assimpordiante.Todosinfluenciamadecomposio,freqentemente
deformasconflitantes.[3]
Muitodosobjetosparticipantesprovmdomtododeanlise.Porm,
projetosorientadosaobjetosacabamsendocompostosporobjetos
quenopossuiumacontrapartidanomundoreal.
Asabstraesquesurgemduranteumprojetosoaschavespara
tornaloflexvel.Ospadresdeprojetoajudamaidentificar
abstraesmenosbviasbemcomoosobjetosquepodemcaptur
las.Porexemplo,objetosquerepresentamprocessooualgoritmono
ocorremnanatureza,noentanto,elessoumapartecrucialde
projetosflexveis.Essesobjetossoraramenteencontradosdurantea
anliseoumesmoduranteosestgiosiniciaisdeumprojetoelesso
descobertosmaistarde,duranteoprocessodetornarumprojetomais
flexvelereutilizvel.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
9/25
01/08/2016
ConheaosPadresdeProjeto
projeto.
2.Examinarqualaintenodopadro,ouseja,oquefazdefatoo
padrodeprojeto,quaisseusprincpiosequetpicoou
problemaparticulardeprojetoeletrata(soluciona).
3.Estudarcomoospadresserelacionam.
4.Estudarassemelhanasexistentesentreospadres.
5.Examinarumacausadereformulaodeprojeto.
6.Consideraroquedeveriaservarivelnoseuprojeto,ouseja,ao
invsdeconsideraroquepodeforarumamudanaemum
projeto,consideraroquevocquersercapazdemudarsem
reprojetlo.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
10/25
01/08/2016
ConheaosPadresdeProjeto
5.Definaosnomesespecficosdaaplicaoparaasoperaesno
padro.Osnomesemgeraldependemdaaplicao.Useas
responsabilidadesecolaboraesassociadascomcadaoperao
comoguia
6.Implementeasoperaesparasuportarasresponsabilidadese
colaboraespresentesdopadro.AseodeImplementao
oferecesugestesparaguilonaimplementao.
Essassoapenasdiretrizesquepodemserutilizadasatqueseja
obtidoexperinciaeconhecimentonecessrioparadesenvolveruma
maneiradetrabalhoparticularcomospadresdeprojeto.Ospadres
deprojetonodevemseraplicadosindiscriminadamente.
Freqentementeelesobtmflexibilidadeevariabilidadepela
introduodenveisadicionaisdeendereamentoindireto,eissopode
complicarumprojetoe/oucustaralgoemtermosdedesempenho.Um
padrodeprojetodeverapenasseraplicadoquandoaflexibilidade
queeleofereceforrealmentenecessria.[3]
Padres de criao
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
11/25
01/08/2016
ConheaosPadresdeProjeto
Ospadresdecriaosoaquelesqueabstraemeouadiamo
processocriaodosobjetos.Elesajudamatornarumsistema
independentedecomoseusobjetossocriados,compostose
representados.Umpadrodecriaodeclasseusaaheranapara
variaraclassequeinstanciada,enquantoqueumpadrodecriao
deobjetodelegarainstanciaoparaoutroobjeto.
Ospadresdecriaotornamseimportantesmedidaqueos
sistemasevoluemnosentidodedependeremmaisdacomposiode
objetosdoqueaheranadeclasses.Odesenvolvimentobaseadona
composiodeobjetospossibilitaqueosobjetossejamcompostos
semanecessidadedeexporoseuinteriorcomoacontecenaherana
declasse,oquepossibilitaadefiniodocomportamento
dinamicamenteeanfasedeslocasedacodificaodemaneirargida
deumconjuntofixodecomportamentos,paraadefiniodeum
conjuntomenordecomportamentosquepodemsercompostosem
qualquernmeroparadefinircomportamentosmaiscomplexos.
Hdoistemasrecorrentesnessespadres.Primeirotodosencapsulam
conhecimentosobrequaisclassesconcretassousadaspelosistema.
Segundoocultamomodocomoessasclassessocriadasemontadas.
Tudoqueosistemasabenogeralsobreosobjetosquesuasclasses
sodefinidasporclassesabstratas.Conseqentemente,ospadresde
criaodomuitaflexibilidadenoquecriado,quemcria,comoe
quandocriado.Elespermitemconfigurarumsistemacomobjetos
produtoquevariamamplamenteemestruturaefuncionalidade.A
configuraopodeseresttica(isto,especificadaemtempode
compilao)oudinmica(emtempodeexecuo).
Abstract Factory
Inteno
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
12/25
01/08/2016
ConheaosPadresdeProjeto
Fornecerumainterfaceparacriaodefamliasdeobjetos
relacionadosoudependentessemespecificarsuasclassesconcretas.
TambmconhecidocomoKit.[3]
Motivao
Estepadrodeveseraplicadoquandosedesejaisolaraaplicaoda
implementaodaclasseconcreta,quepoderiaserumcomponentee
ouframeworkespecficonoqualaaplicaoconheceriaapenasuma
interfaceeaimplementaoconcretaseriaconhecidaapenasem
tempodeexecuooucompilao.
Imaginequeemumaaplicaohouvesseanecessidadedequeela
fosseimplementadaparaoferecersuporteaplataformase
caractersticasdistintas.Porexemplo:Umavisodesktopeuma
mvel(celularPocketPC).Amaneiradeconstitula,seriadefinindo
umafamliadecomponentesparacadaplataformaeumafbricaque
osinstanciadeacordocomaplataformaalvonaqualaaplicao
estarsendoexecutada.
Figura1
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
13/25
01/08/2016
ConheaosPadresdeProjeto
Aplicabilidade
Deacordocomoexpostopelosquatroamigos,ousodopadro
AbstractFactorydeveestarrestritoasseguintessituaes:
Umsistemadeveserindependentedecomoseusprodutosso
criados,compostosourepresentados
Umsistemadeveserconfiguradocomoumprodutodeuma
famliademltiplosprodutos
Umafamliadeobjetosforprojetadaparaserusadaem
conjunto,evocnecessitagarantirestarestrio
Vocquerfornecerumabibliotecadeclassesdeprodutosequer
revelarsomentesuasinterfaces,nosuasimplementaes.
Estrutura
AestruturaarquiteturaldopadrodefinidosegundoGoFdeacordo
comoapresentadonaFigura1.Aestruturadeumexemplomaisde
acordocomarealidadedodesenvolvedorapresentadanaFigura2.A
idiabsicaapresentadapelafiguraadeofereceraousurio
(desenvolvedor)apossibilidadedeexecutarumaaplicaosobre
diferentesplataformas.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
14/25
01/08/2016
ConheaosPadresdeProjeto
Figura2
Participantes
ComponentFactorydeclaraumainterfaceparaoperaesque
criamobjetosdoscomponentesutilizadosnaaplicao
PocketFactoryclasseconcretaqueimplementaasoperaes
quecriamosobjetosnoformatododispositivocliente
PCFactoryclasseconcretaqueimplementaasoperaes
responsveisporcriarosobjetosnoformatodoPC.
Conseqncias
OpadroAbstractFactorypossuiosseguintesbenefciose
desvantagens:
Eleisolaasclassesconcretas.
Eletornafcilatrocadefamliasdeprodutos.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
15/25
01/08/2016
ConheaosPadresdeProjeto
Elapromoveaharmoniaentreprodutos.
difcildesuportarnovostiposdeprodutos.
Factory Method
Inteno
Definirumainterfaceparacriarobjetos,masdeixarqueassubclasses
decidemqueclasseinstanciar.OFactoryMethod,tambmconhecido
comoconstrutorvirtual,possibilitaadiaracriaodoobjetoa
subclasses[3].
Motivao
Essepadrocomumenteutilizadopelosprojetistasdesoftware
quandoexisteanecessidadedeencapsularacriaodeumaclassese
isolandodoconhecimentodaclasseconcretadaaplicaocliente
atravsdeumainterface.Essanecessidadecomumentedesejada
poraquelesquetrabalhamnodesenvolvimentodeframeworks,que
utilizamclassesabstratasparadefiniremanterrelacionamentosentre
osobjetos.Dessaformaosclientesimplementamasfuncionalidades
esperadaspeloframeworkadicionandoalgicadenegcioespecfica
daaplicao,semqueoframeworktenhaoconhecimentodecomoe
qualalgicaimplementadapelaaplicaoparacomplementalo.
Umexemplodeutilizaodopadropodesernaconstruode
aplicaesquetenhaquedarsuporteadiferentesimplementaesde
persistnciacomomnimoderetrabalho.
Aplicabilidade
AutilizaodopadroFactoryMethodpodeestarcondicionada
quando:
1.Umaclassenopodeanteciparaclasse/tipodeobjetosque
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
16/25
01/08/2016
ConheaosPadresdeProjeto
devemcriar
2.Umaclasseespecifiquequesuassubclassestenhamo
conhecimentodosobjetosquecriam
3.Classesquedelegamresponsabilidadeparaumadentrevrias
subclassesauxiliares,evocquerobteroconhecimentodequal
subclasseauxiliarqueadelegada.
Estrutura
Figura3
Participantes
Productdefineainterfacedeobjetosquedeversercriado
pelomtodofbrica
ConcreteProductimplementaodainterfaceProduct
Creatordeclaraomtodofbricaoqualretornaumobjetodo
tipoProduct
ConcreteCreatorredefine(override)omtodofbricaque
retornaumainstnciaconcretadainterfaceProduct.
Conseqncias
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
17/25
01/08/2016
ConheaosPadresdeProjeto
OpadroFactoryMethodeliminaanecessidadedeanexarclasses
especficasdasaplicaesnocdigo.Ocdigolidasomentecoma
interfacedeProductportantoelepodetrabalharcomqualquer
implementaodaclassequeimplementaProduct,definidapelo
usurio.
Singleton
Inteno
Garantirqueumobjetoterapenasumanicainstncia,isto,que
umaclasseirgerarapenasumobjetoequeesteestardisponvelde
formanicaparatodooescopodeumaaplicao[3].
Motivao
Algumasaplicaestmanecessidadedecontrolaronmerode
instnciascriadasdealgumasclasses,sejapelanecessidadeda
prprialgicaoupormotivosdeperformanceeeconomiaderecursos.
Imagineomomentoemqueumaaplicaoqueexista
simultaneamentenumdispositivomvel(PocketPC,Celular,Palm)e
numambientecorporativo,necessitedeumprocessodesincronizao
entreasinformaesprocessadasnodispositivomvelenabase
corporativa.Ambasaplicaesdeveriamsecomunicarcomumobjeto
quedeveriasernicoparaprocessarestesincronismo,afimdeevitar
apossibilidadedecriardadosnabase.
Figura4
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
18/25
01/08/2016
ConheaosPadresdeProjeto
Aplicabilidade
OusodopadroSingletonestcondicionadoa:
Quandofornecessriomanternumsistema,sejaeledistribudo
ouno,apenasumainstnciadeobjetoequeopontodeacesso
paraestesejabemconhecido(Ex.objetoresponsvelporum
pooldeimpressonumarede,gerenciadordejanelas)
Quandoanicainstnciativerdeserextensvelatravsde
subclasses,possibilitandoaosclientesusaremumainstncia
estendidasemalteraroseucdigo(visespolimrficas).
OdesenvolvedoresDelphijutilizamocomportamentodopadro
Singletonemsuasaplicaes,quandodeclaramvariveisglobaisna
readeinicializaodoprojetoedepoisreutilizamainstnciados
objetos.TApplication,TCiipBoardsoexemplosdeobjetosqueno
teriamsentidoexistirmaisdeumainstncianaaplicaoeporisso
assumemocomportamentodopadroSingleton.
Estrutura
Figura5
Participantes
1.Singletondefineummtodoestticoquepermiteaosclientes
obteremoobjetonico.Eletambmserresponsvelpelo
processodecriaodoobjeto.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
19/25
01/08/2016
ConheaosPadresdeProjeto
Conseqncias
Osbenefciosqueopadroapresentaso:
Acessocontroladoainstncianica
Espaodenomesreduzido(diganoaproliferaodevariveis
globais)
Permiteumrefinamentodeoperaeserepresentaes
PermiteumnmerovariveldeinstnciasOpadropossibilita
quesejaadotadaaestratgicadecriarmaisdeumainstnciada
classe,deformacontrolada
Maisflexveldoqueasoperaesdeclasse
Padres estruturais
Ospadresestruturaissepreocupamcomaformacomoclassese
objetossocompostosparaformarestruturasmaiores.Osdeclasses
utilizamaheranaparacomporinterfacesouimplementaes,eos
deobjetoaoinvsdecomporinterfacesouimplementaes,eles
descrevemmaneirasdecomporobjetosparaobternovas
funcionalidades.Aflexibilidadeobtidapelacomposiodeobjetos
provmdacapacidadedemudaracomposioemtempodeexecuo
oquenopossvelcomacomposioesttica(heranadeclasses).
Adapter
Inteno
Converterainterfacedeumaclasseporoutraesperadapelosclientes
[3].Oquepossibilitaqueclassescominterfacesincompatveis
trabalhememconjuntoouque,deoutraforma,seria
impossvel.TambmconhecidocomoWrapper(adaptador).
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
20/25
01/08/2016
ConheaosPadresdeProjeto
Motivao
Algumasvezes,umaclassedeumtoolkit,projetadaparaser
reutilizadanocondizcomainterfaceespecficadeumdomnio
requeridaporumaaplicao.
Aplicabilidade
Ousodopadroestcondicionadoa:
1.Usarumaclasseexistente,massuainterfacenocorresponde
interfacerequerida
2.Criarclassesreutilizveisquecooperamcomclassesno
relacionadasounoprevistas,ouseja,classescominterface
inicialmenteincompatvel.
Estrutura
NaFigura3apresentadaaestruturadopadrobaseadonaherana,
enafigura4abaseadanacomposiodeobjetos.
Participantes
1.Target(Alvo)defineainterfaceespecficadodomniodo
cliente
2.Client(cliente)colaboracomobjetoscompatveiscomTarget
3.Adaptee(Adaptao)interfaceexistentedenecessitade
adaptao
4.Adapter(Adaptador)adaptaainterfaceAdaptee
interfaceTarget.
Conseqncias
Paraadaptaesdeclasses:
Umadaptadordeclassenofuncionarquandoquisermos
adaptarumaclasseetodasassuassubclasses
PermiteaAdaptersubstituiralgumcomportamentodeAdaptee,
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
21/25
01/08/2016
ConheaosPadresdeProjeto
jqueAdapterumasubclasse.
Paraadaptaesdeobjetos:
PermiteaumnicoAdapteradaptarumAdapteeesuas
subclasses
TornamaisdifcilredefinirocomportamentodeumAdaptee.
ConseguidoatravsdeumasubclassedeAdapteeque
referenciadaporAdapter.
Padres de comportamento
Ospadresdecomportamentoseconcentramnosalgoritmose
atribuiesderesponsabilidadesentreosobjetos.Elesnodescrevem
apenaspadresdeobjetosoudeclasses,mastambmospadresde
comunicaoentreosobjetos.
Ospadrescomportamentaisdeclassesutilizamaheranapara
distribuirocomportamentoentreclasses,eospadresde
comportamentodeobjetoutilizamacomposiodeobjetosem
contrapartidaaherana.Algunsdescrevemcomogruposdeobjetos
cooperamparaaexecuodeumatarefaquenopoderiaser
executadaporumobjetosozinho.
Template Method
Inteno
Definiroesqueletodeumalgoritmoemumaoperao,
postergando(deferring)algunspassosparasubclasses.Template
Method(gabaritodemtodo)permitequesubclassesredefinamcertos
passosdeumalgoritmosemmudaraestruturadomesmo.[3]
Motivao
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
22/25
01/08/2016
ConheaosPadresdeProjeto
Imaginequevoctenhadeconstruirumaaplicaoquepossuiuma
determinadafunodaqualsdeconhecimentooalgoritmode
execuo,eotrabalhodecodificaopararealizaodaoperao
possaserpostergado.
Aplicabilidade
Paraimplementaraspartesinvariantesdeumalgoritmoedeixar
parasubclassesaimplementaodapartevariante
Parafatorarocomportamentosemelhanteentresubclasses
numasuperclasseevitandoseassimaduplicaodecdigo
Paracontrolarextensesdeclassescommtodos"gancho"
Estrutura
Figura6
Participantes
AbstractClassdefineasoperaesprimitivaseabstratasque
representamospassosdeumalgoritmoeimplementaum
mtodoqueinvocaestasoperaesprimitivas
ConcreteClassimplementaasoperaesespecficasdefinidas
nasuperclassecomocdigoespecfico.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
23/25
01/08/2016
ConheaosPadresdeProjeto
Conseqncias
Osmtodostemplatesoumatcnicafundamentalparaareutilizao
decdigo.Elesconduzemaumaestruturadeinversodecontrole
eminglsInversionofControlIoCouprincpiodadependncia
inversa,comumenteconhecidacomooprincpiodeHollywood,ou
seja:nonoschame,nschamaremosvoc.Istoserefereacomo
umaclassemechamaasoperaesdeumasubclasse,enoo
contrrio.
Concluses
Ousodepadresdeprojetopropiciaaconstruodeaplicaeseou
estruturasdecdigodeformaflexveleadocumentaodesolues
reaproveitveis.Atravsdospadresdeprojetopossvelidentificar
ospontoscomunsentreduassoluesdiferentesparaummesmo
problema.Conheceressespontoscomunsnospermitedesenvolver
soluescadavezmelhoresemaiseficientesquepodemser
reutilizadas,permitindo,assim,oavanodoconhecimentohumano.
Ospadrespossibilitamatravsdeumalinguagemclaraeconcisa,
queosprojetistasexperientestransfiramosseusconhecimentosaos
maisnovosemumaltonveldeabstraoeassimfacilitamo
desenvolvimentoeoreaproveitamentodecdigo.
Referncias
PAGEJONES,Meilir.Fundamentosdodesenhoorientadoa
objetocomUML.2ed.SoPaulo:MakronBooks,2001.
HEYWORTH,James,IntroductiontoDesignPatternsinDelphi.
ltimavisitaem:08defevereirode2005.
GAMMA,Erich,HELM,RichardJOHNSON,Ralph,VLISSIDES,
John.PadresdeProjeto:soluesreutilizveisdesoftware
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
24/25
01/08/2016
ConheaosPadresdeProjeto
orientadoaobjetos.1.ed.PortoAlegre:Bookman,2000.
KOENIG,Andrew.AntiPatterns.ltimavisitaem08defevereiro
de2005.
ALEXANDER,Christopher,etal.APatternLanguage.Oxford
UniversityPress,NewYork,1977
porAlessandroFerreira
Delphinaveia(!)
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=957
25/25