Escolar Documentos
Profissional Documentos
Cultura Documentos
ConheaosPadresdeProjeto
Buscar
favorito(30)
marcarcomolido
tirardvidas
(20) (0)
Oobjetivodestetextoapresentarumtemaquenosltimosanostemganhadoaateno
dacomunidadedesoftware,queacadadiacobradaparaprojetarsoluesdesoftware
commelhorqualidadeecomomenorcusto.Umaformasemdvidaquecontribuiparaa
obtenonaqualidadeseprojetosdesoftwaresoospadresdeprojetos,eminglsdesign
patterns.
Nodecorrerdotextoserapresentadaumadefiniodoque,eoquecaracterizaum
padrodeprojeto,alm,clarodemostrarqueousoexageradopodelevarasituao
inversaaquesepropemospadresdeprojeto.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
1/23
22/09/2016
ConheaosPadresdeProjeto
Introduo
Atualmentenoseconcebeumprocessodedesenvolvimentodesoftwaresriosema
utilizaodaorientaoaobjetos,poisestapermiteagregarqualidadesimportantesaos
sistemasdesenvolvidossobseusparadigmas,comoaextensabilidadeeareusabilidade[1]
Massomenteporestarutilizandoa,nogarantiadeseobteressasqualidades.Paracriar
asmelhoressolues,precisoseguirumprocessodetalhadoparaobterumaanlisedos
requisitos,funcionaisounofuncionais,edesenvolverumprojetoqueossatisfaaeque
possibilitesubmetlosateste,paraconstatareventuaisfalhas,almdomaissedesejaque
oprojetotenhaumaarquiteturaflexvelparaacomodarfuturosproblemaserequisitossema
necessidadedarealizaodoreprojeto.
Analisandoocotidianododesenvolvimentodesoftwarepossvelidentificarqueaprocura
porumasoluoaumproblemaespecficopossuicaractersticasidnticas,senoiguala
encontradaemumprojetoanteriormentedesenvolvido,masquedevidodeficinciado
processo,asoluoeoproblemanoforadocumentadoesvezestopouco
compreendidoemsuatotalidadeimpossibilitandooreaproveitamentodasidiasesolues.
Destaforma,problemasidnticosqueserepetememoutroscontextosnosoreconhecidos
comotal,consumindotempoerecursosembuscadesoluesqueemtese,jhaviamsido
encontradas.
Umacoisaqueosprojetistasavanadossabemquenodevemfazerresolvercada
problemaapartirdeprincpioselementaresoudozero.Aoinvsdisso,elesreutilizam
soluesquefuncionaramnopassado,eosutilizamrepetidamenteemseusprojetos.
comoresolverumproblemamatemticoatentoindito,oupelo,menosdesconhecidoa
algum.Primeiroutilizasetodososconhecimentoseprincpiosmatemticosquesetem
conhecimentoequevenhaasertilnasoluo,depoisdealgumastentativaseusodas
teoriasmatemticas,chegasesoluoeapartirdatemseumalgoritmo(estrutura)
montadoquepodeserutilizadopararesolvertantosproblemasexistiremequesejam
idnticosaoresolvido,emesmoquenoseja,possvelreaproveitarasidiaseconcluses
doproblemaresolvido.porissoqueospadresdeprojetos,designpatterns,temchamado
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
2/23
22/09/2016
ConheaosPadresdeProjeto
aatenoedespertadoointeressedosprojetistasdesoftware,porproporcionarelementos
queconduzemaoreaproveitamentodesoluesparaprojetos,enoapenasareutilizao
decdigo.
Ospadresdeprojetostornammaisfcilreutilizarsoluesearquiteturasbemsucedidas
paraconstruirsoftwaresorientadosaobjetosdeformaflexvelefcildemanter.Ousode
padresdeprojetopodereduziracomplexidadedoprocessodeprojetarsoftware.Alm
disso,osoftwareorientadoaobjetosbemprojetadopossibilitaaosprojetistasreutilizare
empregarcomponentespreexistentesemsistemasfuturos.
Emsoftware,ospadresdeprojetonosoclassesnemobjeto.Emvezdisso,osprojetistas
usamessespadresparaconstruirconjuntosdeclasseseobjetos.Parautilizlosde
maneiraeficaz,osprojetistasprecisamsefamiliarizarcomospadresmaispopularese
eficazesutilizadospelaengenhariadesoftwareeconheceroseucontextoeescopo.
Aidiadeprojetarsoluesapartirdealgojconhecidoedocumentado,nonovaeto
poucoteveorigemnaindustriadesoftware,apesardelajdemonstraruminteressepelo
tema.Aidiasurgiuem1977quandoChristopherAlexanderpublicouumcatlogocommais
de250padresparaaarquiteturacivil,quediscutiamquestescomunsdaarquitetura,
descrevendoemdetalheoproblemaeasjustificativasdesuasoluo.
ChristopherAlexanderdescobriuquediminuindoofoco,ouseja,procurandoestruturasque
resolvamproblemassimilares,elepodediscernirsimilaridadesentreprojetosdealta
qualidade.Elechamouessassimilaridadesdepadres[5].
Algumtempodepoiseleformalizaseumtododedescriodospadres,defendendoque
seuusonolimitariaosarquitetosssoluesprescritas,masgarantiriaapresenade
elementosfundamentais,eapossibilidadedeaperfeioalaatravsdasexperincias
adquiridas.Essemtodochamouatenodacomunidadedesoftware,fazendoqueotema
ganhassedestaquenasconfernciassobreorientaoaobjetos.Em1995ErichGama,
RichardHelm,RalphJohnson,JohnVlissides,conhecidoscomoosquatroamigos[Gangof
FourGoF],publicaramolivrosobreottulo:Designpatternselementsofreusableobject
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
3/23
22/09/2016
ConheaosPadresdeProjeto
orientedsoftware,AddisonWesleyLongman,queganhouumaversonalnguaportuguesa
sobreottulodePadresdeProjetoSoluesreutilizveisdesoftwareorientadoa
objetos.Bookman.Olivroumcatlogoquedescreve23padresdeprojetocadaum
fornecendoumasoluoparaumproblemadesoftware,seucontexto,aplicaoesuas
eventuaisconseqncias,dividindoosem3categorias:padresdecriao,estruturais,ede
comportamento.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
4/23
22/09/2016
ConheaosPadresdeProjeto
SegundoChristopherAlexander,cadapadrodescreveumproblemanonossoambienteeo
ncleodasuasoluo,detalformaquevocpossausarestasoluomaisdeummilhode
vezes,semnuncafazelodamesmamaneira.
Ogrupodosquatroamigosclassificouospadresdeprojetopordoiscritrios.Oprimeiro
critrioafinalidaderefleteoqueumpadrofaz.Ospadrespodemterfinalidadesde
criao,comportamentoeestrutural.Ospadresdecriaodescrevemastcnicaspara
instanciarobjetos(ougruposdeobjetos),epossibilitamorganizarclasseseobjetosem
estruturamaiores,osdecomportamentosecaracterizampelamaneirapelasquaisclasses
ouobjetosinteragemedistribuemresponsabilidadeseosestruturaislidamcoma
composiodeclassesouobjetos.Osegundocritriooescopoespecificaseopadro
aplicadoclasseouobjeto.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
5/23
22/09/2016
ConheaosPadresdeProjeto
4.Todopadrodeverelatarquaissoassuasconseqnciasparaquepossaser
analisadaasoluoalternativadeprojetoseparaacompreensodosbenefciosda
aplicaodoprojeto.
Nopodeserconsideradoumpadrodeprojetotrechodecdigosespecficos,mesmoque
paraoseucriadorelereflitaumpadro,quesolucionaumdeterminadoproblema,porqueos
padresdevemestaraumnvelmaiordeabstraoenolimitadoarecursosde
programao.Umpadrodeprojetonomeia,abstraieidentificaosaspectoschavesdeuma
estruturadeprojetocomumparatornalatilparaacriaodeumprojetoorientadoa
objetosreutilizvel[3].
6/23
22/09/2016
ConheaosPadresdeProjeto
prtica,entoumantipadrorepresentaumalioaprendida.
Existemduasnoesdeantipadres:
1.Aquelesquedescrevemumasoluoruimparaumproblemaqueresultouemuma
situaoruim
2.Aquelesquedescrevemcomoselivrardeumasituaoruimecomoprocederdessa
situaoparaumasituaoboa.
Emsumaumantipadroconstituiaousoindevidodospadresdeprojeto,ouoseuuso
exagerado,oquepodeserconstatadopelautilizaodepadresimprpriosparaum
determinadocontexto,ouusoinadequado.Autilizaodospadresproporcionaum
aumentonaflexibilidadedosistema,entretantopodedeixalomaiscomplexooudegradara
performance.Algumasperdassotolerveis,massubestimarosefeitoscolateraisda
adoodospatterns,umerrocomum,principalmentedaquelesquetomamousocomoum
diferencialenopelarealnecessidade.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
7/23
22/09/2016
ConheaosPadresdeProjeto
Asabstraesquesurgemduranteumprojetosoaschavesparatornaloflexvel.Os
padresdeprojetoajudamaidentificarabstraesmenosbviasbemcomoosobjetosque
podemcapturlas.Porexemplo,objetosquerepresentamprocessooualgoritmono
ocorremnanatureza,noentanto,elessoumapartecrucialdeprojetosflexveis.Esses
objetossoraramenteencontradosduranteaanliseoumesmoduranteosestgiosiniciais
deumprojetoelessodescobertosmaistarde,duranteoprocessodetornarumprojeto
maisflexvelereutilizvel.
8/23
22/09/2016
ConheaosPadresdeProjeto
quatrosamigosparaaplicarumpadroaumprojeto:
1.Leropadroporcompletoumavez,paraobtersuavisogeral.Conheceropadro
principalmenteasuaaplicabilidadeeconseqnciassoimportantesparaqueele
realmentesolucioneoseuproblema
2.EstudarseesEstrutura,ParticipanteseColaboraes.Assegurandosedeque
compreendeuasclasseseobjetosnopadroecomoserelacionamentresi
3.Escolherosnomesparaosparticipantesdopadroquetenhamsentidonocontextoda
aplicao
4.Definirasclasses.Declararasinterfaces,estabelecerosseusrelacionamentosde
heranaedefinirasvariveisdeinstnciaquerepresentamdadoserefernciasa
objetos.Identifiqueasclassesexistentesnaaplicaoqueseroafetadaspelopadro
emodifiqueas
5.Definaosnomesespecficosdaaplicaoparaasoperaesnopadro.Osnomesem
geraldependemdaaplicao.Useasresponsabilidadesecolaboraesassociadas
comcadaoperaocomoguia
6.Implementeasoperaesparasuportarasresponsabilidadesecolaboraes
presentesdopadro.AseodeImplementaooferecesugestesparaguilona
implementao.
Essassoapenasdiretrizesquepodemserutilizadasatquesejaobtidoexperinciae
conhecimentonecessrioparadesenvolverumamaneiradetrabalhoparticularcomos
padresdeprojeto.Ospadresdeprojetonodevemseraplicadosindiscriminadamente.
Freqentementeelesobtmflexibilidadeevariabilidadepelaintroduodenveisadicionais
deendereamentoindireto,eissopodecomplicarumprojetoe/oucustaralgoemtermosde
desempenho.Umpadrodeprojetodeverapenasseraplicadoquandoaflexibilidadeque
eleofereceforrealmentenecessria.[3]
9/23
22/09/2016
ConheaosPadresdeProjeto
UmarpidaleituradoscdigosdaVCL(VisualComponentLibrary)doDelphiconstatase
queelaforaconstrudofazendousointensivodospadresdeprojetos.Oquemuitobom,
poisconstataonveldeexcelnciadaferramenta.IstodevidoaoDelphiimplementar
completamenteasboasprticasdaorientaoaobjetosOOP,queauxiliamna
implementaodeprojetosreutilizveis.
Padres de criao
Ospadresdecriaosoaquelesqueabstraemeouadiamoprocessocriaodos
objetos.Elesajudamatornarumsistemaindependentedecomoseusobjetossocriados,
compostoserepresentados.Umpadrodecriaodeclasseusaaheranaparavariara
classequeinstanciada,enquantoqueumpadrodecriaodeobjetodelegara
instanciaoparaoutroobjeto.
Ospadresdecriaotornamseimportantesmedidaqueossistemasevoluemnosentido
dedependeremmaisdacomposiodeobjetosdoqueaheranadeclasses.O
desenvolvimentobaseadonacomposiodeobjetospossibilitaqueosobjetossejam
compostossemanecessidadedeexporoseuinteriorcomoacontecenaheranadeclasse,
oquepossibilitaadefiniodocomportamentodinamicamenteeanfasedeslocaseda
codificaodemaneirargidadeumconjuntofixodecomportamentos,paraadefiniode
umconjuntomenordecomportamentosquepodemsercompostosemqualquernmero
paradefinircomportamentosmaiscomplexos.
Hdoistemasrecorrentesnessespadres.Primeirotodosencapsulamconhecimentosobre
quaisclassesconcretassousadaspelosistema.Segundoocultamomodocomoessas
classessocriadasemontadas.Tudoqueosistemasabenogeralsobreosobjetosque
suasclassessodefinidasporclassesabstratas.Conseqentemente,ospadresdecriao
domuitaflexibilidadenoquecriado,quemcria,comoequandocriado.Elespermitem
configurarumsistemacomobjetosprodutoquevariamamplamenteemestruturae
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
10/23
22/09/2016
ConheaosPadresdeProjeto
funcionalidade.Aconfiguraopodeseresttica(isto,especificadaemtempode
compilao)oudinmica(emtempodeexecuo).
Abstract Factory
Inteno
Fornecerumainterfaceparacriaodefamliasdeobjetosrelacionadosoudependentes
semespecificarsuasclassesconcretas.TambmconhecidocomoKit.[3]
Motivao
Estepadrodeveseraplicadoquandosedesejaisolaraaplicaodaimplementaoda
classeconcreta,quepoderiaserumcomponenteeouframeworkespecficonoquala
aplicaoconheceriaapenasumainterfaceeaimplementaoconcretaseriaconhecida
apenasemtempodeexecuooucompilao.
Imaginequeemumaaplicaohouvesseanecessidadedequeelafosseimplementada
paraoferecersuporteaplataformasecaractersticasdistintas.Porexemplo:Umaviso
desktopeumamvel(celularPocketPC).Amaneiradeconstitula,seriadefinindouma
famliadecomponentesparacadaplataformaeumafbricaqueosinstanciadeacordocom
aplataformaalvonaqualaaplicaoestarsendoexecutada.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
11/23
22/09/2016
ConheaosPadresdeProjeto
Figura1
Aplicabilidade
Deacordocomoexpostopelosquatroamigos,ousodopadroAbstractFactorydeveestar
restritoasseguintessituaes:
Umsistemadeveserindependentedecomoseusprodutossocriados,compostosou
representados
Umsistemadeveserconfiguradocomoumprodutodeumafamliademltiplos
produtos
Umafamliadeobjetosforprojetadaparaserusadaemconjunto,evocnecessita
garantirestarestrio
Vocquerfornecerumabibliotecadeclassesdeprodutosequerrevelarsomentesuas
interfaces,nosuasimplementaes.
Estrutura
AestruturaarquiteturaldopadrodefinidosegundoGoFdeacordocomoapresentadona
Figura1.Aestruturadeumexemplomaisdeacordocomarealidadedodesenvolvedor
apresentadanaFigura2.Aidiabsicaapresentadapelafiguraadeofereceraousurio
(desenvolvedor)apossibilidadedeexecutarumaaplicaosobrediferentesplataformas.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
12/23
22/09/2016
ConheaosPadresdeProjeto
Figura2
Participantes
ComponentFactorydeclaraumainterfaceparaoperaesquecriamobjetosdos
componentesutilizadosnaaplicao
PocketFactoryclasseconcretaqueimplementaasoperaesquecriamosobjetos
noformatododispositivocliente
PCFactoryclasseconcretaqueimplementaasoperaesresponsveisporcriaros
objetosnoformatodoPC.
Conseqncias
OpadroAbstractFactorypossuiosseguintesbenefciosedesvantagens:
Eleisolaasclassesconcretas.
Eletornafcilatrocadefamliasdeprodutos.
Elapromoveaharmoniaentreprodutos.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
13/23
22/09/2016
ConheaosPadresdeProjeto
difcildesuportarnovostiposdeprodutos.
Factory Method
Inteno
Definirumainterfaceparacriarobjetos,masdeixarqueassubclassesdecidemqueclasse
instanciar.OFactoryMethod,tambmconhecidocomoconstrutorvirtual,possibilitaadiara
criaodoobjetoasubclasses[3].
Motivao
Essepadrocomumenteutilizadopelosprojetistasdesoftwarequandoexistea
necessidadedeencapsularacriaodeumaclasseseisolandodoconhecimentodaclasse
concretadaaplicaoclienteatravsdeumainterface.Essanecessidadecomumente
desejadaporaquelesquetrabalhamnodesenvolvimentodeframeworks,queutilizam
classesabstratasparadefiniremanterrelacionamentosentreosobjetos.Dessaformaos
clientesimplementamasfuncionalidadesesperadaspeloframeworkadicionandoalgicade
negcioespecficadaaplicao,semqueoframeworktenhaoconhecimentodecomoe
qualalgicaimplementadapelaaplicaoparacomplementalo.
Umexemplodeutilizaodopadropodesernaconstruodeaplicaesquetenhaque
darsuporteadiferentesimplementaesdepersistnciacomomnimoderetrabalho.
Aplicabilidade
AutilizaodopadroFactoryMethodpodeestarcondicionadaquando:
1.Umaclassenopodeanteciparaclasse/tipodeobjetosquedevemcriar
2.Umaclasseespecifiquequesuassubclassestenhamoconhecimentodosobjetosque
criam
3.Classesquedelegamresponsabilidadeparaumadentrevriassubclassesauxiliares,e
vocquerobteroconhecimentodequalsubclasseauxiliarqueadelegada.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
14/23
22/09/2016
ConheaosPadresdeProjeto
Estrutura
Figura3
Participantes
Productdefineainterfacedeobjetosquedeversercriadopelomtodofbrica
ConcreteProductimplementaodainterfaceProduct
CreatordeclaraomtodofbricaoqualretornaumobjetodotipoProduct
ConcreteCreatorredefine(override)omtodofbricaqueretornaumainstncia
concretadainterfaceProduct.
Conseqncias
OpadroFactoryMethodeliminaanecessidadedeanexarclassesespecficasdas
aplicaesnocdigo.OcdigolidasomentecomainterfacedeProductportantoelepode
trabalharcomqualquerimplementaodaclassequeimplementaProduct,definidapelo
usurio.
Singleton
Inteno
Garantirqueumobjetoterapenasumanicainstncia,isto,queumaclasseirgerar
apenasumobjetoequeesteestardisponveldeformanicaparatodooescopodeuma
aplicao[3].
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
15/23
22/09/2016
ConheaosPadresdeProjeto
Motivao
Algumasaplicaestmanecessidadedecontrolaronmerodeinstnciascriadasde
algumasclasses,sejapelanecessidadedaprprialgicaoupormotivosdeperformancee
economiaderecursos.
Imagineomomentoemqueumaaplicaoqueexistasimultaneamentenumdispositivo
mvel(PocketPC,Celular,Palm)enumambientecorporativo,necessitedeumprocessode
sincronizaoentreasinformaesprocessadasnodispositivomvelenabasecorporativa.
Ambasaplicaesdeveriamsecomunicarcomumobjetoquedeveriasernicopara
processarestesincronismo,afimdeevitarapossibilidadedecriardadosnabase.
Figura4
Aplicabilidade
OusodopadroSingletonestcondicionadoa:
Quandofornecessriomanternumsistema,sejaeledistribudoouno,apenasuma
instnciadeobjetoequeopontodeacessoparaestesejabemconhecido(Ex.objeto
responsvelporumpooldeimpressonumarede,gerenciadordejanelas)
Quandoanicainstnciativerdeserextensvelatravsdesubclasses,possibilitando
aosclientesusaremumainstnciaestendidasemalteraroseucdigo(vises
polimrficas).
OdesenvolvedoresDelphijutilizamocomportamentodopadroSingletonemsuas
aplicaes,quandodeclaramvariveisglobaisnareadeinicializaodoprojetoedepois
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
16/23
22/09/2016
ConheaosPadresdeProjeto
reutilizamainstnciadosobjetos.TApplication,TCiipBoardsoexemplosdeobjetosque
noteriamsentidoexistirmaisdeumainstncianaaplicaoeporissoassumemo
comportamentodopadroSingleton.
Estrutura
Figura5
Participantes
1.Singletondefineummtodoestticoquepermiteaosclientesobteremoobjetonico.
Eletambmserresponsvelpeloprocessodecriaodoobjeto.
Conseqncias
Osbenefciosqueopadroapresentaso:
Acessocontroladoainstncianica
Espaodenomesreduzido(diganoaproliferaodevariveisglobais)
Permiteumrefinamentodeoperaeserepresentaes
PermiteumnmerovariveldeinstnciasOpadropossibilitaquesejaadotadaa
estratgicadecriarmaisdeumainstnciadaclasse,deformacontrolada
Maisflexveldoqueasoperaesdeclasse
Padres estruturais
Ospadresestruturaissepreocupamcomaformacomoclasseseobjetossocompostos
paraformarestruturasmaiores.Osdeclassesutilizamaheranaparacomporinterfacesou
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
17/23
22/09/2016
ConheaosPadresdeProjeto
implementaes,eosdeobjetoaoinvsdecomporinterfacesouimplementaes,eles
descrevemmaneirasdecomporobjetosparaobternovasfuncionalidades.Aflexibilidade
obtidapelacomposiodeobjetosprovmdacapacidadedemudaracomposioemtempo
deexecuooquenopossvelcomacomposioesttica(heranadeclasses).
Adapter
Inteno
Converterainterfacedeumaclasseporoutraesperadapelosclientes[3].Oquepossibilita
queclassescominterfacesincompatveistrabalhememconjuntoouque,deoutraforma,
seriaimpossvel.TambmconhecidocomoWrapper(adaptador).
Motivao
Algumasvezes,umaclassedeumtoolkit,projetadaparaserreutilizadanocondizcoma
interfaceespecficadeumdomniorequeridaporumaaplicao.
Aplicabilidade
Ousodopadroestcondicionadoa:
1.Usarumaclasseexistente,massuainterfacenocorrespondeinterfacerequerida
2.Criarclassesreutilizveisquecooperamcomclassesnorelacionadasouno
previstas,ouseja,classescominterfaceinicialmenteincompatvel.
Estrutura
NaFigura3apresentadaaestruturadopadrobaseadonaherana,enafigura4a
baseadanacomposiodeobjetos.
Participantes
1.Target(Alvo)defineainterfaceespecficadodomniodocliente
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
18/23
22/09/2016
ConheaosPadresdeProjeto
2.Client(cliente)colaboracomobjetoscompatveiscomTarget
3.Adaptee(Adaptao)interfaceexistentedenecessitadeadaptao
4.Adapter(Adaptador)adaptaainterfaceAdapteeinterfaceTarget.
Conseqncias
Paraadaptaesdeclasses:
DEVMEDIA
BaixeoAPP
Login
Umadaptadordeclassenofuncionarquandoquisermosadaptarumaclasseetodas
assuassubclasses
PermiteaAdaptersubstituiralgumcomportamentodeAdaptee,jqueAdapteruma
subclasse.
Paraadaptaesdeobjetos:
PermiteaumnicoAdapteradaptarumAdapteeesuassubclasses
TornamaisdifcilredefinirocomportamentodeumAdaptee.Conseguidoatravsde
umasubclassedeAdapteequereferenciadaporAdapter.
Padres de comportamento
Ospadresdecomportamentoseconcentramnosalgoritmoseatribuiesde
responsabilidadesentreosobjetos.Elesnodescrevemapenaspadresdeobjetosoude
classes,mastambmospadresdecomunicaoentreosobjetos.
Ospadrescomportamentaisdeclassesutilizamaheranaparadistribuirocomportamento
entreclasses,eospadresdecomportamentodeobjetoutilizamacomposiodeobjetos
emcontrapartidaaherana.Algunsdescrevemcomogruposdeobjetoscooperamparaa
execuodeumatarefaquenopoderiaserexecutadaporumobjetosozinho.
Template Method
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
19/23
22/09/2016
ConheaosPadresdeProjeto
Inteno
Definiroesqueletodeumalgoritmoemumaoperao,postergando(deferring)alguns
passosparasubclasses.TemplateMethod(gabaritodemtodo)permitequesubclasses
redefinamcertospassosdeumalgoritmosemmudaraestruturadomesmo.[3]
Motivao
DEVMEDIA
BaixeoAPP
Login
Imaginequevoctenhadeconstruirumaaplicaoquepossuiumadeterminadafunoda
qualsdeconhecimentooalgoritmodeexecuo,eotrabalhodecodificaopara
realizaodaoperaopossaserpostergado.
Aplicabilidade
Paraimplementaraspartesinvariantesdeumalgoritmoedeixarparasubclassesa
implementaodapartevariante
Parafatorarocomportamentosemelhanteentresubclassesnumasuperclasse
evitandoseassimaduplicaodecdigo
Paracontrolarextensesdeclassescommtodos"gancho"
Estrutura
Figura6
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
20/23
22/09/2016
ConheaosPadresdeProjeto
Participantes
AbstractClassdefineasoperaesprimitivaseabstratasquerepresentamospassos
deumalgoritmoeimplementaummtodoqueinvocaestasoperaesprimitivas
ConcreteClassimplementaasoperaesespecficasdefinidasnasuperclassecomo
cdigoespecfico.
DEVMEDIA
Conseqncias
BaixeoAPP
Login
Osmtodostemplatesoumatcnicafundamentalparaareutilizaodecdigo.Eles
conduzemaumaestruturadeinversodecontroleeminglsInversionofControlIoCou
princpiodadependnciainversa,comumenteconhecidacomooprincpiodeHollywood,
ouseja:nonoschame,nschamaremosvoc.Istoserefereacomoumaclasseme
chamaasoperaesdeumasubclasse,enoocontrrio.
Concluses
Ousodepadresdeprojetopropiciaaconstruodeaplicaeseouestruturasdecdigo
deformaflexveleadocumentaodesoluesreaproveitveis.Atravsdospadresde
projetopossvelidentificarospontoscomunsentreduassoluesdiferentesparaum
mesmoproblema.Conheceressespontoscomunsnospermitedesenvolversoluescada
vezmelhoresemaiseficientesquepodemserreutilizadas,permitindo,assim,oavanodo
conhecimentohumano.
Ospadrespossibilitamatravsdeumalinguagemclaraeconcisa,queosprojetistas
experientestransfiramosseusconhecimentosaosmaisnovosemumaltonvelde
abstraoeassimfacilitamodesenvolvimentoeoreaproveitamentodecdigo.
Referncias
PAGEJONES,Meilir.FundamentosdodesenhoorientadoaobjetocomUML.2
ed.SoPaulo:MakronBooks,2001.
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
21/23
22/09/2016
ConheaosPadresdeProjeto
HEYWORTH,James,IntroductiontoDesignPatternsinDelphi.ltimavisitaem:08de
fevereirode2005.
GAMMA,Erich,HELM,RichardJOHNSON,Ralph,VLISSIDES,John.Padresde
Projeto:soluesreutilizveisdesoftwareorientadoaobjetos.1.ed.PortoAlegre:
Bookman,2000.
KOENIG,Andrew.AntiPatterns.ltimavisitaem08defevereirode2005.
BaixeoAPP
Login
DEVMEDIA
ALEXANDER,Christopher,etal.APatternLanguage.OxfordUniversityPress,New
York,1977
PublicadonoCanalDelphi
porAlessandroFerreira
Delphinaveia(!)
Ajudenosaevoluir:vocgostoudopost?
(20) (0)
Compartilhe:
Ficoucomalgumadvida?
Postaquisuadvidaoucomentrioquenossaequiperesponderomaisrpido
possvel.
Maisposts
Revista
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
22/23
22/09/2016
ConheaosPadresdeProjeto
DEVMEDIA
BaixeoAPP
Login
Artigo
DevMedia
CurtirPgina
122milcurtidas
1amigocurtiuisso
HospedagemwebporPorta80WebHosting
http://www.devmedia.com.br/conhecaospadroesdeprojeto/957
23/23